diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-11-03 22:03:12 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-11-03 22:03:12 +0100 |
commit | fd88d721d2327e92a8c6c156dde266967dfb0d91 (patch) | |
tree | 4aca8c505d28ebc405c6e4dd5f8c9889105361d4 /blas/level2_impl.h | |
parent | a8fb6b0ad33a4620424e31e842b54c8cd255c6d2 (diff) |
implement proper error handling in level 3 routines
Diffstat (limited to 'blas/level2_impl.h')
-rw-r--r-- | blas/level2_impl.h | 14 |
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; |