In Blaze matrix/vector multiplications can be as intuitively formulated as in mathematical textbooks. Just as in textbooks there are two different multiplications between a matrix and a vector: a matrix/column vector multiplication and a row vector/matrix multiplication:
using blaze::StaticVector; using blaze::DynamicVector; using blaze::DynamicMatrix; DynamicMatrix<int> M1( 39UL, 12UL ); StaticVector<int,12UL,columnVector> v1; // ... Initialization of the matrix and the vector DynamicVector<int,columnVector> v2 = M1 * v1; // Matrix/column vector multiplication DynamicVector<int,rowVector> v3 = trans( v1 ) * M1; // Row vector/matrix multiplication
Note that the storage order of the matrix poses no restrictions on the operation. Also note, that the highest performance for a multiplication between a dense matrix and a dense vector can be achieved if both the matrix and the vector have the same scalar element type.