From 0020ea544a83a8ffb394b8b84bb2a5c865d2dd73 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Sun, 21 Nov 2010 10:09:33 +0100 Subject: implement HEMV level2 blas routine --- blas/level2_impl.h | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'blas') diff --git a/blas/level2_impl.h b/blas/level2_impl.h index 92d058a5c..87a4d04df 100644 --- a/blas/level2_impl.h +++ b/blas/level2_impl.h @@ -500,8 +500,43 @@ int EIGEN_BLAS_FUNC(spr2)(char *uplo, int *n, RealScalar *alpha, RealScalar *x, * where alpha and beta are scalars, x and y are n element vectors and * A is an n by n hermitian matrix. */ -int EIGEN_BLAS_FUNC(hemv)(char *uplo, int *n, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *x, int *incx, RealScalar *pbeta, RealScalar *y, int *incy) +int EIGEN_BLAS_FUNC(hemv)(char *uplo, int *n, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *px, int *incx, RealScalar *pbeta, RealScalar *py, int *incy) { + Scalar* a = reinterpret_cast(pa); + Scalar* x = reinterpret_cast(px); + Scalar* y = reinterpret_cast(py); + Scalar alpha = *reinterpret_cast(palpha); + Scalar beta = *reinterpret_cast(pbeta); + + // check arguments + int info = 0; + if(UPLO(*uplo)==INVALID) info = 1; + else if(*n<0) info = 2; + else if(*lda() * (alpha * vector(actual_x,*n)); + else if(UPLO(*uplo)==LO) vector(actual_y,*n).noalias() += matrix(a,*n,*n,*lda).selfadjointView() * (alpha * vector(actual_x,*n)); + } + + if(actual_x!=x) delete[] actual_x; + if(actual_y!=y) delete[] copy_back(actual_y,y,*n,*incy); + return 1; } -- cgit v1.2.3