28 template <
typename DataType>
39 A(A_, num_rows_, num_columns_, A_is_row_major_)
53 template <
typename DataType>
66 A(A_, num_rows_, num_columns_, A_is_row_major_),
67 B(B_, num_rows_, num_columns_, B_is_row_major_)
70 if (this->
B.is_identity_matrix())
82 template <
typename DataType>
108 template <
typename DataType>
110 const DataType* vector,
114 this->A.dot(vector, product);
118 if (this->B_is_identity)
121 assert((this->parameters != NULL) &&
"Parameter is not set.");
125 (this->num_rows < this->num_columns) ? \
126 this->num_rows : this->num_columns;
129 this->_add_scaled_vector(vector, min_vector_size,
130 this->parameters[0], product);
135 assert((this->parameters != NULL) &&
"Parameter is not set.");
138 this->B.dot_plus(vector, this->parameters[0], product);
164 template <
typename DataType>
166 const DataType* vector,
170 this->A.transpose_dot(vector, product);
174 if (this->B_is_identity)
177 assert((this->parameters != NULL) &&
"Parameter is not set.");
181 (this->num_rows < this->num_columns) ? \
182 this->num_rows : this->num_columns;
185 this->_add_scaled_vector(vector, min_vector_size,
186 this->parameters[0], product);
191 assert((this->parameters != NULL) &&
"Parameter is not set.");
194 this->B.transpose_dot_plus(vector, this->parameters[0], product);
Base class for affine matrix functions of one parameter.
cDenseAffineMatrixFunction(const DataType *A_, const FlagType A_is_row_major_, const LongIndexType num_rows_, const LongIndexType num_colums_)
Constructor. Matrix B is assumed to be the identity matrix.
virtual void dot(const DataType *vector, DataType *product)
Computes the matrix vector product:
virtual ~cDenseAffineMatrixFunction()
cDenseMatrix< DataType > B
virtual void transpose_dot(const DataType *vector, DataType *product)
Computes the matrix vector product:
FlagType eigenvalue_relation_known