Macaulay2 Engine
Loading...
Searching...
No Matches

◆ addMultipleTo() [10/12]

void MatrixOps::addMultipleTo ( DMatZZpFFPACK & C,
const DMatZZpFFPACK::ElementType & a,
const DMatZZpFFPACK & A,
const DMatZZpFFPACK & B )

Definition at line 13 of file dmat.cpp.

17{
18 // Compute C := C + a*A*B
19 // Both DMat, and FFPACK store dense matrices in row major order.
20 // Note that the leading dimension in gemm arguments is #columns,
21 // as the matrix is in row-major order
22
23 FFLAS::FFLAS_TRANSPOSE tA = FFLAS::FflasNoTrans;
24 FFLAS::FFLAS_TRANSPOSE tB = FFLAS::FflasNoTrans;
25
26 size_t m = A.numRows();
27 size_t k = A.numColumns();
28 assert(A.numColumns() == B.numRows());
29 size_t n = B.numColumns();
30
31 assert(C.numRows() == m);
32 assert(C.numColumns() == n);
33
34 DMatZZpFFPACK::ElementType b;
35 C.ring().init(b);
36 C.ring().set_from_long(b, 1);
37 FFLAS::fgemm(C.ring().field(),
38 tB,
39 tA,
40 m,
41 n,
42 k,
43 a,
44 A.rowMajorArray(),
45 A.numColumns(),
46 B.rowMajorArray(),
47 B.numColumns(),
48 b,
49 C.rowMajorArray(),
50 C.numColumns());
51}

References DMatZZpFFPACK.

Referenced by addMultipleTo(), MutableMat< Mat >::addMultipleTo(), mult(), and subtractMultipleTo().