33#ifndef __H__UG__CPU_ALGEBRA__OPERATIONS_MAT__
34#define __H__UG__CPU_ALGEBRA__OPERATIONS_MAT__
58template<
typename vector_t,
typename matrix_t>
60 const number &beta1,
const matrix_t &A1,
const vector_t &w1)
67template<
typename vector_t,
typename matrix_t>
69 const number &alpha1,
const vector_t &v1,
70 const number &beta1,
const matrix_t &A1,
const vector_t &w1 )
77template<
typename vector_t,
typename matrix_t>
79 const number &alpha1,
const vector_t &v1,
80 const number &alpha2,
const vector_t &v2,
81 const number &beta1,
const matrix_t &A1,
const vector_t &w1)
84 ::MatMultAdd(dest, alpha1, v1, alpha2, v2, beta1, A1, w1);
88template<
typename vector_t,
typename matrix_t>
90 const number &beta1,
const matrix_t &A1,
const vector_t &w1,
91 const number &beta2,
const matrix_t &A2,
const vector_t &w2)
98template<
typename vector_t,
typename matrix_t>
100 const number &alpha1,
const vector_t &v1,
101 const number &beta1,
const matrix_t &A1,
const vector_t &w1,
102 const number &beta2,
const matrix_t &A2,
const vector_t &w2)
105 ::MatMultAdd(dest, alpha1, v1, beta1, A1, w1, beta2, A2, w2);
110template<
typename vector_t,
typename matrix_t>
112 const number &beta1,
const matrix_t &A1,
const vector_t &w1 )
120template<
typename vector_t,
typename matrix_t>
122 const number &alpha1,
const vector_t &v1,
123 const number &beta1,
const matrix_t &A1,
const vector_t &w1 )
130template<typename vector_t, typename matrix_t>
131inline void MatMultAddNorm(vector_t &dest,
132 const number &beta1, const TE_MAT_RowApplicable<matrix_t> &A1, const vector_t &w1,
133 const number &alpha1, const vector_t &v1,
136 if(OPERATIONS_VERBOSE) cout << "dest: " << dest << endl <<
137 "\t= " << beta1 << " * " << A1.cast() << "\t * " << w1 << endl <<
138 "\t+ " << alpha1 << " * " << v1 << endl;
141 for(size_t i=0; i<dest.size(); i++)
143 VecScaleAssign(dest[i], alpha1, v1[i]);
144 A1.cast().mat_mult_add_row(i, dest[i], beta1, w1);
145 VecNormSquaredAdd(dest[i], norm);
double number
Definition types.h:124
bool MatMultTransposedAdd(vector_t &dest, const number &alpha1, const vector_t &v1, const number &beta1, const matrix_t &A1, const vector_t &w1)
calculates dest = alpha1*v1 + beta1 * A1 *w1;
Definition operations_mat.h:121
bool MatMultAdd(vector_t &dest, const number &alpha1, const vector_t &v1, const number &beta1, const matrix_t &A1, const vector_t &w1)
calculates dest = alpha1*v1 + beta1 * A1 *w1;
Definition operations_mat.h:68
bool MatMult(vector_t &dest, const number &beta1, const matrix_t &A1, const vector_t &w1)
calculates dest = beta1 * A1;
Definition operations_mat.h:59
bool MatMultTransposed(vector_t &dest, const number &beta1, const matrix_t &A1, const vector_t &w1)
calculates dest = alpha1*v1 + beta1 * A1 *w1;
Definition operations_mat.h:111
Definition matrix_algebra_types.h:75