aboutsummaryrefslogtreecommitdiffhomepage
path: root/blas/common.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-03-01 19:06:07 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-03-01 19:06:07 +0100
commita7b9250ad04fe02f9c51085164478bc1687577f3 (patch)
tree57a7ce0ad6e2c1e09f12deed1df0efc9960663a3 /blas/common.h
parenta1ac56a7c783843ef312afff186a95024a9cc3c0 (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.h45
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