mtimes

General matrix-matrix multiplication.

  1. Slice!(Contiguous, [2], BlasType!(IteratorA, IteratorB)*) mtimes(Slice!(kindA, [2], IteratorA) a, Slice!(kindB, [2], IteratorB) b)
  2. Slice!(Contiguous, [1], BlasType!(IteratorA, IteratorB)*) mtimes(Slice!(kindA, [2], IteratorA) a, Slice!(kindB, [1], IteratorB) b)
  3. Slice!(Contiguous, [1], BlasType!(IteratorA, IteratorB)*) mtimes(Slice!(kindB, [1], IteratorB) a, Slice!(kindA, [2], IteratorA) b)
    Slice!(Contiguous, [1], BlasType!(IteratorA, IteratorB)*)
    mtimes
    (
    SliceKind kindA
    IteratorA
    SliceKind kindB
    IteratorB
    )
    (
    Slice!(kindB, [1], IteratorB) a
    ,
    Slice!(kindA, [2], IteratorA) b
    )
  4. CommonType!(BlasType!IteratorA, BlasType!IteratorB) mtimes(Slice!(kindB, [1], IteratorB) a, Slice!(kindA, [1], IteratorA) b)

Parameters

a Slice!(kindB, [1], IteratorB)

1(rows) x k(cols) vector

b Slice!(kindA, [2], IteratorA)

k(rows) x n(cols) matrix Result: 1(rows) x n(cols)

Examples

auto a =
    [-5,  1,  7, 7, -4,
     -1, -5,  6, 3, -3,
     -5, -2, -3, 6,  0]
        .sliced(3, 5)
        .universal
        .transposed;

auto b = slice!double(5);
b[] = [-5, 4,-4,-1, 9];

assert(mtimes(b, a) == [-42, -69, 23]);

Meta