From cbd6fe323c77ae93c3fbd7ee300a2deeebf39554 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Fri, 16 Jul 2010 23:30:06 +0200 Subject: fix a couple a issue with blas (new TRMM api, and enforece column major) --- blas/common.h | 6 +++--- blas/level3_impl.h | 13 +++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) (limited to 'blas') diff --git a/blas/common.h b/blas/common.h index fa211b141..843e64ab7 100644 --- a/blas/common.h +++ b/blas/common.h @@ -86,15 +86,15 @@ enum Conj = IsComplex }; -typedef Map, 0, OuterStride > MatrixType; +typedef Map, 0, OuterStride<> > MatrixType; typedef Map, 0, InnerStride > StridedVectorType; typedef Map > CompactVectorType; template -Map, 0, OuterStride > +Map, 0, OuterStride<> > matrix(T* data, int rows, int cols, int stride) { - return Map, 0, OuterStride >(data, rows, cols, OuterStride(stride)); + return Map, 0, OuterStride<> >(data, rows, cols, OuterStride<>(stride)); } template diff --git a/blas/level3_impl.h b/blas/level3_impl.h index 099a04889..ff7ed6752 100644 --- a/blas/level3_impl.h +++ b/blas/level3_impl.h @@ -63,10 +63,8 @@ int EIGEN_BLAS_FUNC(gemm)(char *opa, char *opb, int *m, int *n, int *k, RealScal if(beta!=Scalar(1)) { - if(beta==Scalar(0)) - matrix(c, *m, *n, *ldc).setZero(); - else - matrix(c, *m, *n, *ldc) *= beta; + if(beta==Scalar(0)) matrix(c, *m, *n, *ldc).setZero(); + else matrix(c, *m, *n, *ldc) *= beta; } ei_gemm_blocking_space blocking(*m,*n,*k); @@ -207,14 +205,17 @@ int EIGEN_BLAS_FUNC(trmm)(char *side, char *uplo, char *opa, char *diag, int *m, return 0; } + if(*m==0 || *n==0) + return 1; + // FIXME find a way to avoid this copy - Matrix tmp = matrix(b,*m,*n,*ldb); + Matrix tmp = matrix(b,*m,*n,*ldb); matrix(b,*m,*n,*ldb).setZero(); if(SIDE(*side)==LEFT) func[code](*m, *n, *m, a, *lda, tmp.data(), tmp.outerStride(), b, *ldb, alpha); else - func[code](*n, *m, *n, tmp.data(), tmp.outerStride(), a, *lda, b, *ldb, alpha); + func[code](*m, *n, *n, tmp.data(), tmp.outerStride(), a, *lda, b, *ldb, alpha); return 1; } -- cgit v1.2.3