1 #ifndef _theplu_yat_utility_expression_scaled_matrix 2 #define _theplu_yat_utility_expression_scaled_matrix 25 #include "yat/utility/BasicMatrix.h" 26 #include "yat/utility/BLAS_utility.h" 27 #include "yat/utility/MatrixExpression.h" 29 #include <gsl/gsl_matrix.h> 34 namespace expression {
39 class ScaledMatrix :
public MatrixExpression<ScaledMatrix<T> >
42 ScaledMatrix(
double factor,
const BasicMatrix<T>& A)
43 : A_(A), factor_(factor) {}
45 size_t rows(
void)
const {
return A_.rows(); }
46 size_t columns(
void)
const {
return A_.columns(); }
49 double operator()(
size_t i,
size_t j)
const 51 return factor_ * A_(i, j);
55 const T& base(
void)
const 57 return static_cast<const T&
>(A_);
61 void calculate_matrix(gsl_matrix*& result)
const 63 detail::copy(result, A_.gsl_matrix_p());
64 gsl_matrix_scale(result, factor_);
68 double factor(
void)
const 74 const BasicMatrix<T>& A_;
The Department of Theoretical Physics namespace as we define it.