diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-03-01 19:06:07 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-03-01 19:06:07 +0100 |
commit | a7b9250ad04fe02f9c51085164478bc1687577f3 (patch) | |
tree | 57a7ce0ad6e2c1e09f12deed1df0efc9960663a3 /blas/common.h | |
parent | a1ac56a7c783843ef312afff186a95024a9cc3c0 (diff) |
blas interface: fix compilation, fix GEMM, SYMM, TRMM, and TRSM,
i,e., they all pass the blas test suite. More to come
Diffstat (limited to 'blas/common.h')
-rw-r--r-- | blas/common.h | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/blas/common.h b/blas/common.h index e7bfda570..8b9c6ff09 100644 --- a/blas/common.h +++ b/blas/common.h @@ -25,6 +25,8 @@ #ifndef EIGEN_BLAS_COMMON_H #define EIGEN_BLAS_COMMON_H +#include <iostream> + #ifndef SCALAR #error the token SCALAR must be defined to compile this file #endif @@ -34,13 +36,12 @@ extern "C" { #endif -#include <blas.h> +#include "../bench/btl/libs/C_BLAS/blas.h" #ifdef __cplusplus } #endif - #define NOTR 0 #define TR 1 #define ADJ 2 @@ -75,41 +76,39 @@ extern "C" #include <Eigen/Jacobi> using namespace Eigen; +typedef SCALAR Scalar; +typedef NumTraits<Scalar>::Real RealScalar; +typedef std::complex<RealScalar> Complex; + +enum +{ + IsComplex = Eigen::NumTraits<SCALAR>::IsComplex, + Conj = IsComplex +}; + +typedef Map<Matrix<Scalar,Dynamic,Dynamic>, 0, OuterStride<Dynamic> > MatrixType; +typedef Map<Matrix<Scalar,Dynamic,1>, 0, InnerStride<Dynamic> > StridedVectorType; +typedef Map<Matrix<Scalar,Dynamic,1> > CompactVectorType; + template<typename T> -Block<Map<Matrix<T,Dynamic,Dynamic> >, Dynamic, Dynamic> +Map<Matrix<T,Dynamic,Dynamic>, 0, OuterStride<Dynamic> > matrix(T* data, int rows, int cols, int stride) { - return Map<Matrix<T,Dynamic,Dynamic> >(data, stride, cols).block(0,0,rows,cols); + return Map<Matrix<T,Dynamic,Dynamic>, 0, OuterStride<Dynamic> >(data, rows, cols, OuterStride<Dynamic>(stride)); } template<typename T> -Block<Map<Matrix<T,Dynamic,Dynamic,RowMajor> >, Dynamic, 1> -vector(T* data, int size, int incr) +Map<Matrix<T,Dynamic,1>, 0, InnerStride<Dynamic> > vector(T* data, int size, int incr) { - return Map<Matrix<T,Dynamic,Dynamic,RowMajor> >(data, size, incr).col(0); + return Map<Matrix<T,Dynamic,1>, 0, InnerStride<Dynamic> >(data, size, InnerStride<Dynamic>(incr)); } template<typename T> -Map<Matrix<T,Dynamic,1> > -vector(T* data, int size) +Map<Matrix<T,Dynamic,1> > vector(T* data, int size) { return Map<Matrix<T,Dynamic,1> >(data, size); } -typedef SCALAR Scalar; -typedef NumTraits<Scalar>::Real RealScalar; -typedef std::complex<RealScalar> Complex; - -enum -{ - IsComplex = Eigen::NumTraits<SCALAR>::IsComplex, - Conj = IsComplex -}; - -typedef Block<Map<Matrix<Scalar,Dynamic,Dynamic> >, Dynamic, Dynamic> MatrixType; -typedef Block<Map<Matrix<Scalar,Dynamic,Dynamic, RowMajor> >, Dynamic, 1> StridedVectorType; -typedef Map<Matrix<Scalar,Dynamic,1> > CompactVectorType; - #define EIGEN_BLAS_FUNC(X) EIGEN_CAT(SCALAR_SUFFIX,X##_) #endif // EIGEN_BLAS_COMMON_H |