48template <
typename DataType>
50 const DataType* A_data_,
61 A(A_data_, A_indices_, A_index_pointer_, num_rows_, num_columns_,
111template <
typename DataType>
113 const DataType* A_data_,
119 const DataType* B_data_,
128 A(A_data_, A_indices_, A_index_pointer_, num_rows_, num_columns_,
130 B(B_data_, B_indices_, B_index_pointer_, num_rows_, num_columns_,
134 if (this->
B.is_identity_matrix())
149template <
typename DataType>
171template <
typename DataType>
178 this->B.set_symmetry(1);
182 this->A.set_symmetry(0);
183 this->B.set_symmetry(0);
207template <
typename DataType>
209 const DataType* vector,
213 this->A.dot(vector, product);
217 if (this->B_is_identity)
220 assert((this->parameters != NULL) &&
"Parameter is not set.");
224 (this->num_rows < this->num_columns) ? \
225 this->num_rows : this->num_columns;
228 this->_add_scaled_vector(vector, min_vector_size,
229 this->parameters[0], product);
234 assert((this->parameters != NULL) &&
"Parameter is not set.");
237 this->B.dot_plus(vector, this->parameters[0], product);
260template <
typename DataType>
262 const DataType* vector,
266 this->A.transpose_dot(vector, product);
270 if (this->B_is_identity)
273 assert((this->parameters != NULL) &&
"Parameter is not set.");
277 (this->num_rows < this->num_columns) ? \
278 this->num_rows : this->num_columns;
281 this->_add_scaled_vector(vector, min_vector_size,
282 this->parameters[0], product);
287 assert((this->parameters != NULL) &&
"Parameter is not set.");
290 this->B.transpose_dot_plus(vector, this->parameters[0], product);
Container for CSR affine matrix functions of one parameter.
cCSRAffineMatrixFunction(const DataType *A_data_, const LongIndexType *A_indices_, const LongIndexType *A_index_pointer_, const LongIndexType num_rows_, const LongIndexType num_columns_, const FlagType A_is_symmetric_)
Default constructor.
virtual void set_symmetry(const FlagType symmetric)
Specify whether the matrices are symmetic or non-symmetric.
virtual ~cCSRAffineMatrixFunction()
Destructor.
virtual void dot(const DataType *vector, DataType *product)
Matrix vector product.
virtual void transpose_dot(const DataType *vector, DataType *product)
Matrix vector product written in place.
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