aboutsummaryrefslogtreecommitdiffhomepage
path: root/blas/level3_impl.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-07-16 23:30:06 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-07-16 23:30:06 +0200
commitcbd6fe323c77ae93c3fbd7ee300a2deeebf39554 (patch)
tree3f53ef6a472379a814eb5978f3f64196d230157d /blas/level3_impl.h
parentf59226e901c5af32c71d6087c84db8ff968ac413 (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.h13
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;
}