From 0f2df4b20203357e05187cc0261d381f9ca3d714 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Sun, 14 Oct 2007 08:16:50 +0000 Subject: [PATCH] remove support for type std::complex. Simplify NumTraits accordingly. --- src/Core/Dot.h | 2 +- src/Core/Matrix.h | 2 -- src/Core/NumTraits.h | 20 +++++--------------- src/Core/Object.h | 2 -- src/Core/ScalarMultiple.h | 1 - test/basicstuff.cpp | 1 - 6 files changed, 6 insertions(+), 22 deletions(-) diff --git a/src/Core/Dot.h b/src/Core/Dot.h index 5f0fed8b5..e630d669c 100644 --- a/src/Core/Dot.h +++ b/src/Core/Dot.h @@ -84,7 +84,7 @@ typename NumTraits::Real Object::norm2() const template typename NumTraits::Real Object::norm() const { - return NumTraits::Real>::sqrt(norm2()); + return std::sqrt(norm2()); } template diff --git a/src/Core/Matrix.h b/src/Core/Matrix.h index aad999a04..518057d9f 100644 --- a/src/Core/Matrix.h +++ b/src/Core/Matrix.h @@ -110,7 +110,6 @@ EI_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X) EI_MAKE_TYPEDEFS_ALL_SIZES(int, i) EI_MAKE_TYPEDEFS_ALL_SIZES(float, f) EI_MAKE_TYPEDEFS_ALL_SIZES(double, d) -EI_MAKE_TYPEDEFS_ALL_SIZES(std::complex, ci) EI_MAKE_TYPEDEFS_ALL_SIZES(std::complex, cf) EI_MAKE_TYPEDEFS_ALL_SIZES(std::complex, cd) @@ -132,7 +131,6 @@ EI_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X) EI_USING_MATRIX_TYPEDEFS_FOR_TYPE(i) \ EI_USING_MATRIX_TYPEDEFS_FOR_TYPE(f) \ EI_USING_MATRIX_TYPEDEFS_FOR_TYPE(d) \ -EI_USING_MATRIX_TYPEDEFS_FOR_TYPE(ci) \ EI_USING_MATRIX_TYPEDEFS_FOR_TYPE(cf) \ EI_USING_MATRIX_TYPEDEFS_FOR_TYPE(cd) diff --git a/src/Core/NumTraits.h b/src/Core/NumTraits.h index 3ef3615cd..68fa1cc71 100644 --- a/src/Core/NumTraits.h +++ b/src/Core/NumTraits.h @@ -42,8 +42,6 @@ template<> struct NumTraits static int real(const int& x) { return x; } static int imag(const int& x) { EI_UNUSED(x); return 0; } static int conj(const int& x) { return x; } - static double sqrt(const int& x) { return std::sqrt(static_cast(x)); } - static int abs(const int& x) { return std::abs(x); } static int abs2(const int& x) { return x*x; } static int random() { @@ -83,8 +81,6 @@ template<> struct NumTraits static float real(const float& x) { return x; } static float imag(const float& x) { EI_UNUSED(x); return 0; } static float conj(const float& x) { return x; } - static float sqrt(const float& x) { return std::sqrt(x); } - static float abs(const float& x) { return std::abs(x); } static float abs2(const float& x) { return x*x; } static float random() { @@ -92,11 +88,11 @@ template<> struct NumTraits } static bool isMuchSmallerThan(const float& a, const float& b, const float& prec = precision()) { - return abs(a) <= abs(b) * prec; + return std::abs(a) <= std::abs(b) * prec; } static bool isApprox(const float& a, const float& b, const float& prec = precision()) { - return abs(a - b) <= std::min(abs(a), abs(b)) * prec; + return std::abs(a - b) <= std::min(std::abs(a), std::abs(b)) * prec; } static bool isApproxOrLessThan(const float& a, const float& b, const float& prec = precision()) { @@ -117,8 +113,6 @@ template<> struct NumTraits static double real(const double& x) { return x; } static double imag(const double& x) { EI_UNUSED(x); return 0; } static double conj(const double& x) { return x; } - static double sqrt(const double& x) { return std::sqrt(x); } - static double abs(const double& x) { return std::abs(x); } static double abs2(const double& x) { return x*x; } static double random() { @@ -126,11 +120,11 @@ template<> struct NumTraits } static bool isMuchSmallerThan(const double& a, const double& b, const double& prec = precision()) { - return abs(a) <= abs(b) * prec; + return std::abs(a) <= std::abs(b) * prec; } static bool isApprox(const double& a, const double& b, const double& prec = precision()) { - return abs(a - b) <= std::min(abs(a), abs(b)) * prec; + return std::abs(a - b) <= std::min(std::abs(a), std::abs(b)) * prec; } static bool isApproxOrLessThan(const double& a, const double& b, const double& prec = precision()) { @@ -152,12 +146,8 @@ template struct NumTraits > static Real real(const Complex& x) { return std::real(x); } static Real imag(const Complex& x) { return std::imag(x); } static Complex conj(const Complex& x) { return std::conj(x); } - static FloatingPoint sqrt(const Complex& x) - { return std::sqrt(static_cast(x)); } - static RealFloatingPoint abs(const Complex& x) - { return std::abs(static_cast(x)); } static Real abs2(const Complex& x) - { return std::real(x) * std::real(x) + std::imag(x) * std::imag(x); } + { return std::norm(x); } static Complex random() { return Complex(NumTraits::random(), NumTraits::random()); diff --git a/src/Core/Object.h b/src/Core/Object.h index 72928406b..95f540f10 100644 --- a/src/Core/Object.h +++ b/src/Core/Object.h @@ -145,14 +145,12 @@ template class Object Derived& operator*=(const int& other); Derived& operator*=(const float& other); Derived& operator*=(const double& other); - Derived& operator*=(const std::complex& other); Derived& operator*=(const std::complex& other); Derived& operator*=(const std::complex& other); Derived& operator/=(const int& other); Derived& operator/=(const float& other); Derived& operator/=(const double& other); - Derived& operator/=(const std::complex& other); Derived& operator/=(const std::complex& other); Derived& operator/=(const std::complex& other); diff --git a/src/Core/ScalarMultiple.h b/src/Core/ScalarMultiple.h index 8532411a6..137804c43 100644 --- a/src/Core/ScalarMultiple.h +++ b/src/Core/ScalarMultiple.h @@ -104,7 +104,6 @@ Object::operator/=(const OtherScalar &other) \ EI_MAKE_SCALAR_OPS(int) EI_MAKE_SCALAR_OPS(float) EI_MAKE_SCALAR_OPS(double) -EI_MAKE_SCALAR_OPS(std::complex) EI_MAKE_SCALAR_OPS(std::complex) EI_MAKE_SCALAR_OPS(std::complex) diff --git a/test/basicstuff.cpp b/test/basicstuff.cpp index 345a9f3ad..1d61b3aaa 100644 --- a/test/basicstuff.cpp +++ b/test/basicstuff.cpp @@ -75,7 +75,6 @@ template void basicStuff(const MatrixType& m) void EigenTest::testBasicStuff() { basicStuff(Matrix()); - basicStuff(Matrix, 2, 5>()); basicStuff(Matrix, 4, 4>()); basicStuff(MatrixXcf(3, 3)); basicStuff(MatrixXi(8, 12));