gemm

@trusted pure nothrow @nogc
void
gemm
(
T
SliceKind kindA
SliceKind kindB
SliceKind kindC
)
(,
Slice!(const(T)*, 2, kindA) a
,
Slice!(const(T)*, 2, kindB) b
,,
Slice!(T*, 2, kindC) c
)

Examples

import mir.ndslice.slice: sliced;
import mir.ndslice.topology: universal;

auto a = [3.0, 5, 2, 4, 2, 3].sliced(2, 3).universal;
auto b = [2.0, 3, 4].sliced(3, 1).universal;

auto c = [100.0, 100].sliced(2, 1).universal;
gemm(1.0, a, b, 1.0, c);
assert(c == [[6 + 15 + 8 + 100], [8 + 6 + 12 + 100]]);