diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-07-16 23:30:06 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-07-16 23:30:06 +0200 |
commit | cbd6fe323c77ae93c3fbd7ee300a2deeebf39554 (patch) | |
tree | 3f53ef6a472379a814eb5978f3f64196d230157d /blas/level3_impl.h | |
parent | f59226e901c5af32c71d6087c84db8ff968ac413 (diff) |
fix a couple a issue with blas (new TRMM api, and enforece column major)
Diffstat (limited to 'blas/level3_impl.h')
-rw-r--r-- | blas/level3_impl.h | 13 |
1 files changed, 7 insertions, 6 deletions
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<ColMajor,Scalar,Scalar,Dynamic,Dynamic,Dynamic> 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<Scalar,Dynamic,Dynamic> tmp = matrix(b,*m,*n,*ldb); + Matrix<Scalar,Dynamic,Dynamic,ColMajor> 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; } |