Multiplying transposed matrices in mir

p.shkadzko p.shkadzko at gmail.com
Sun Apr 19 20:29:54 UTC 2020


On Sunday, 19 April 2020 at 20:06:23 UTC, jmh530 wrote:
> On Sunday, 19 April 2020 at 19:20:28 UTC, p.shkadzko wrote:
>> [snip]
>> well no, "assumeContiguous" reverts the results of the 
>> "transposed" and it's "a * a".
>> I would expect it to stay transposed as NumPy does "assert 
>> np.all(np.ascontiguous(a.T) == a.T)".
>
> Ah, you're right. I use it in other places where it hasn't been 
> an issue.
>
> I can do it with an allocation (below) using the built-in 
> syntax, but not sure how do-able it is without an allocation 
> (Ilya would know better than me).
>
> /+dub.sdl:
> dependency "lubeck" version="~>1.1.7"
> dependency "mir-algorithm" version="~>3.7.28"
> +/
> import mir.ndslice;
> import lubeck;
>
> void main() {
>     auto a = [2.1, 1.0, 3.2, 4.5, 2.4, 3.3, 1.5, 0, 
> 2.1].sliced(3, 3);
>     auto b = a * a.transposed.slice;
> }

Thanks. I somehow missed the whole point of "a * a.transposed" 
not working because "a.transposed" is not allocated.



More information about the Digitalmars-d-learn mailing list