From a76fbbf39777827200455477a9e3557b6063913f Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 6 Nov 2012 15:25:50 +0100 Subject: Fix bug #314: - remove most of the metaprogramming kung fu in MathFunctions.h (only keep functions that differs from the std) - remove the overloads for array expression that were in the std namespace --- blas/level1_impl.h | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'blas') diff --git a/blas/level1_impl.h b/blas/level1_impl.h index 95ea220af..c73f4d4f9 100644 --- a/blas/level1_impl.h +++ b/blas/level1_impl.h @@ -75,6 +75,9 @@ int EIGEN_CAT(EIGEN_CAT(i,SCALAR_SUFFIX),amin_)(int *n, RealScalar *px, int *inc int EIGEN_BLAS_FUNC(rotg)(RealScalar *pa, RealScalar *pb, RealScalar *pc, RealScalar *ps) { + using std::sqrt; + using std::abs; + Scalar& a = *reinterpret_cast(pa); Scalar& b = *reinterpret_cast(pb); RealScalar* c = pc; @@ -82,8 +85,8 @@ int EIGEN_BLAS_FUNC(rotg)(RealScalar *pa, RealScalar *pb, RealScalar *pc, RealSc #if !ISCOMPLEX Scalar r,z; - Scalar aa = internal::abs(a); - Scalar ab = internal::abs(b); + Scalar aa = abs(a); + Scalar ab = abs(b); if((aa+ab)==Scalar(0)) { *c = 1; @@ -93,7 +96,7 @@ int EIGEN_BLAS_FUNC(rotg)(RealScalar *pa, RealScalar *pb, RealScalar *pc, RealSc } else { - r = internal::sqrt(a*a + b*b); + r = sqrt(a*a + b*b); Scalar amax = aa>ab ? a : b; r = amax>0 ? r : -r; *c = a/r; @@ -108,7 +111,7 @@ int EIGEN_BLAS_FUNC(rotg)(RealScalar *pa, RealScalar *pb, RealScalar *pc, RealSc #else Scalar alpha; RealScalar norm,scale; - if(internal::abs(a)==RealScalar(0)) + if(abs(a)==RealScalar(0)) { *c = RealScalar(0); *s = Scalar(1); @@ -116,10 +119,10 @@ int EIGEN_BLAS_FUNC(rotg)(RealScalar *pa, RealScalar *pb, RealScalar *pc, RealSc } else { - scale = internal::abs(a) + internal::abs(b); - norm = scale*internal::sqrt((internal::abs2(a/scale))+ (internal::abs2(b/scale))); - alpha = a/internal::abs(a); - *c = internal::abs(a)/norm; + scale = abs(a) + abs(b); + norm = scale*sqrt((internal::abs2(a/scale))+ (internal::abs2(b/scale))); + alpha = a/abs(a); + *c = abs(a)/norm; *s = alpha*internal::conj(b)/norm; a = alpha*norm; } -- cgit v1.2.3