aboutsummaryrefslogtreecommitdiffhomepage
path: root/blas
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2012-11-06 15:25:50 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2012-11-06 15:25:50 +0100
commita76fbbf39777827200455477a9e3557b6063913f (patch)
tree6a03f8fcb163fa2c3dc2267c52fd1204f5490309 /blas
parent959ef37006e60f68b9a9e667bf9da2e14eb0e8af (diff)
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
Diffstat (limited to 'blas')
-rw-r--r--blas/level1_impl.h19
1 files changed, 11 insertions, 8 deletions
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<Scalar*>(pa);
Scalar& b = *reinterpret_cast<Scalar*>(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;
}