|
template<typename T > |
void | mpqc::blas::clear (size_t n, T *x) |
|
template<class A , class B > |
A::Scalar | mpqc::blas::dot (const Eigen::MatrixBase< A > &a, const Eigen::MatrixBase< B > &b) |
|
template<typename Alpha , class A , class B > |
void | mpqc::blas::axpy (const Alpha &alpha, const Eigen::MatrixBase< A > &a, Eigen::MatrixBase< B > &b) |
|
template<typename Alpha , class A , class B , typename Beta , class C > |
void | mpqc::blas::gemm (const Alpha &alpha, const Eigen::MatrixBase< A > &a, const Eigen::MatrixBase< B > &b, const Beta &beta, Eigen::MatrixBase< C > &c) |
|
BLAS bindings. The BLAS biding are meant to serve as a safer way to interface C++ Matrix objects, namely Eigen::Matrix and mpqc::matrix, with BLAS libraries, eg:
auto a = MatrixXd::Map(data, m, k);
Eigen::MatrixXd b(k,n);
blas::gemm(1.0, a, b, 0.0, c);
BLAS bindings can be disabled and Eigen expression equivalents will be used instead by setting the value of MPQCMATH_USE_BLAS
macro to 0. This gives a good way to test if interface is working correctly.
BLAS bindings are implemented on top of Boost.Numeric.Bindings.