45 #include <viennacl/linalg/matrix_operations.hpp>
46 #include <viennacl/linalg/vector_operations.hpp>
47 #endif // HAVE_VIENNACL
55 namespace implementation
59 template <enum Backend,
class Matrix>
63 typedef typename Matrix::Scalar
T;
66 static void compute(Matrix A, Matrix B, Matrix C, T alpha, T beta);
72 template <>
template <
class Matrix>
73 struct add<Backend::EIGEN3, Matrix>
75 typedef typename Matrix::Scalar
T;
87 C_eig = alpha*A_eig + beta*B_eig;
98 C_eig = alpha*A_eig + beta*B_eig;
101 #endif // HAVE_EIGEN3
106 template <>
template <
class Matrix>
107 struct add<Backend::VIENNACL, Matrix>
109 typedef typename Matrix::Scalar
T;
112 static void compute(CGPUMatrix<T> A, CGPUMatrix<T> B, CGPUMatrix<T> C,
115 C.vcl_matrix() = alpha*A.vcl_matrix() + beta*B.vcl_matrix();
119 static void compute(CGPUVector<T> A, CGPUVector<T> B, CGPUVector<T> C,
122 C.vcl_vector() = alpha*A.vcl_vector() + beta*B.vcl_vector();
126 #endif // HAVE_VIENNACL
133 #endif // ADD_IMPL_H_
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > MatrixXt
void add(Matrix A, Matrix B, Matrix C, typename Matrix::Scalar alpha=1.0, typename Matrix::Scalar beta=1.0)
Eigen::Matrix< T, Eigen::Dynamic, 1 > VectorXt
static void compute(Matrix A, Matrix B, Matrix C, T alpha, T beta)
static void compute(SGVector< T > A, SGVector< T > B, SGVector< T > C, T alpha, T beta)
static void compute(SGMatrix< T > A, SGMatrix< T > B, SGMatrix< T > C, T alpha, T beta)
all of classes and functions are contained in the shogun namespace