- 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
This commit is contained in:
Gael Guennebaud
2012-11-06 15:25:50 +01:00
parent 959ef37006
commit a76fbbf397
88 changed files with 496 additions and 468 deletions

View File

@@ -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;
}