47template <
typename DataType>
59 A(A_, num_rows_, num_columns_, A_is_row_major_, A_is_symmetric_)
108template <
typename DataType>
123 A(A_, num_rows_, num_columns_, A_is_row_major_, A_is_symmetric_),
124 B(B_, num_rows_, num_columns_, B_is_row_major_, B_is_symmetric_)
127 if (this->
B.is_identity_matrix())
142template <
typename DataType>
164template <
typename DataType>
171 this->B.set_symmetry(1);
175 this->A.set_symmetry(0);
176 this->B.set_symmetry(0);
200template <
typename DataType>
202 const DataType* vector,
206 this->A.dot(vector, product);
210 if (this->B_is_identity)
213 assert((this->parameters != NULL) &&
"Parameter is not set.");
217 (this->num_rows < this->num_columns) ? \
218 this->num_rows : this->num_columns;
221 this->_add_scaled_vector(vector, min_vector_size,
222 this->parameters[0], product);
227 assert((this->parameters != NULL) &&
"Parameter is not set.");
230 this->B.dot_plus(vector, this->parameters[0], product);
253template <
typename DataType>
255 const DataType* vector,
259 this->A.transpose_dot(vector, product);
263 if (this->B_is_identity)
266 assert((this->parameters != NULL) &&
"Parameter is not set.");
270 (this->num_rows < this->num_columns) ? \
271 this->num_rows : this->num_columns;
274 this->_add_scaled_vector(vector, min_vector_size,
275 this->parameters[0], product);
280 assert((this->parameters != NULL) &&
"Parameter is not set.");
283 this->B.transpose_dot_plus(vector, this->parameters[0], product);
Container for dense affine matrix functions of one parameter.
cDenseAffineMatrixFunction(const DataType *A_, const LongIndexType num_rows_, const LongIndexType num_columns_, const FlagType A_is_row_major_, const FlagType A_is_symmetric_)
Default constructor.
virtual void dot(const DataType *vector, DataType *product)
Matrix vector product.
virtual ~cDenseAffineMatrixFunction()
Destructor.
cDenseMatrix< DataType > B
virtual void transpose_dot(const DataType *vector, DataType *product)
Matrix vector product written in place.
virtual void set_symmetry(const FlagType symmetric)
Specify whether the matrices are symmetic or non-symmetric.
Base class for cLinearOperator and cuLinearOperator . This class is not templated so that both cpp an...
FlagType eigenvalue_relation_known
virtual void set_symmetry(FlagType symmetric)=0