aboutsummaryrefslogtreecommitdiffhomepage
path: root/blas/level2_impl.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-11-03 22:03:12 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-11-03 22:03:12 +0100
commitfd88d721d2327e92a8c6c156dde266967dfb0d91 (patch)
tree4aca8c505d28ebc405c6e4dd5f8c9889105361d4 /blas/level2_impl.h
parenta8fb6b0ad33a4620424e31e842b54c8cd255c6d2 (diff)
implement proper error handling in level 3 routines
Diffstat (limited to 'blas/level2_impl.h')
-rw-r--r--blas/level2_impl.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/blas/level2_impl.h b/blas/level2_impl.h
index a7d5adb64..3489a426d 100644
--- a/blas/level2_impl.h
+++ b/blas/level2_impl.h
@@ -32,6 +32,20 @@ int EIGEN_BLAS_FUNC(gemv)(char *opa, int *m, int *n, RealScalar *palpha, RealSca
Scalar alpha = *reinterpret_cast<Scalar*>(palpha);
Scalar beta = *reinterpret_cast<Scalar*>(pbeta);
+ // check arguments
+ int info = 0;
+ if( OP(*opa)!=NOTR
+ && OP(*opa)!=TR
+ && OP(*opa)!=ADJ) info = 1;
+ else if(*m<0) info = 2;
+ else if(*n<0) info = 3;
+ else if(*lda<std::max(1,*m)) info = 6;
+ else if(*incb==0) info = 8;
+ else if(*incc==0) info = 11;
+ if(info)
+ return xerbla_(SCALAR_SUFFIX_UP"GEMV ",&info,6);
+// return xerbla_("SGEMV ",&info,sizeof("SGEMV "));
+
if(beta!=Scalar(1))
vector(c, *m, *incc) *= beta;