From 882ea0ed75bae35b3f7adecd1750001916ff754b Mon Sep 17 00:00:00 2001 From: George Perendia Date: Mon, 15 Mar 2010 12:12:43 +0000 Subject: [PATCH] Amending assertions in BlasBindings.hh --- mex/sources/estimation/libmat/BlasBindings.hh | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/mex/sources/estimation/libmat/BlasBindings.hh b/mex/sources/estimation/libmat/BlasBindings.hh index 4196b2f88..e741c2283 100644 --- a/mex/sources/estimation/libmat/BlasBindings.hh +++ b/mex/sources/estimation/libmat/BlasBindings.hh @@ -50,10 +50,41 @@ namespace blas double alpha, const Mat1 &A, const Mat2 &B, double beta, Mat3 &C) { - assert(A.getRows() == C.getRows()); - assert(A.getCols() == B.getRows()); - assert(B.getCols() == C.getCols()); blas_int m = A.getRows(), n = B.getCols(), k = A.getCols(); + if (*transa == 'N') + { + if (*transb == 'N') + { + assert(A.getRows() == C.getRows()); + assert(A.getCols() == B.getRows()); + assert(B.getCols() == C.getCols()); + } + else if (*transb == 'T') + { + assert(A.getRows() == C.getRows()); + assert(A.getCols() == B.getCols()); + assert(B.getRows() == C.getCols()); + n = B.getRows(); + } + } + else if (*transa == 'T') + { + m = A.getCols(); + k = A.getRows(); + if (*transb == 'N') + { + assert(A.getCols() == C.getRows()); + assert(A.getRows() == B.getRows()); + assert(B.getCols() == C.getCols()); + } + else if (*transb == 'T') + { + assert(A.getCols() == C.getRows()); + assert(A.getRows() == B.getCols()); + assert(B.getRows() == C.getCols()); + n = B.getRows(); + } + } blas_int lda = A.getLd(), ldb = B.getLd(), ldc = C.getLd(); dgemm(transa, transb, &m, &n, &k, &alpha, A.getData(), &lda, B.getData(), &ldb, &beta, C.getData(), &ldc);