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