diff --git a/unsupported/Eigen/MPRealSupport b/unsupported/Eigen/MPRealSupport index 1fe03e8a1..10fa23b35 100644 --- a/unsupported/Eigen/MPRealSupport +++ b/unsupported/Eigen/MPRealSupport @@ -34,7 +34,7 @@ #include namespace Eigen { - + /** \defgroup MPRealSupport_Module MPFRC++ Support module * * \code @@ -45,6 +45,8 @@ namespace Eigen { * via the MPFR C++ * library which itself is built upon MPFR/GMP. * + * You can find a copy of MPFR C++ that is known to be compatible in the unsupported/test/mpreal folder. + * * Here is an example: * \code @@ -129,18 +131,6 @@ int main() return a + (b-a) * random(); } - template<> struct conj_impl { inline static const mpfr::mpreal& run(const mpfr::mpreal& x) { return x; } }; - template<> struct real_impl { inline static const mpfr::mpreal& run(const mpfr::mpreal& x) { return x; } }; - template<> struct imag_impl { inline static const mpfr::mpreal run(const mpfr::mpreal&) { return mpfr::mpreal(0); } }; - template<> struct abs_impl { inline static const mpfr::mpreal run(const mpfr::mpreal& x) { return mpfr::fabs(x); } }; - template<> struct abs2_impl { inline static const mpfr::mpreal run(const mpfr::mpreal& x) { return x*x; } }; - template<> struct sqrt_impl { inline static const mpfr::mpreal run(const mpfr::mpreal& x) { return mpfr::sqrt(x); } }; - template<> struct exp_impl { inline static const mpfr::mpreal run(const mpfr::mpreal& x) { return mpfr::exp(x); } }; - template<> struct log_impl { inline static const mpfr::mpreal run(const mpfr::mpreal& x) { return mpfr::log(x); } }; - template<> struct sin_impl { inline static const mpfr::mpreal run(const mpfr::mpreal& x) { return mpfr::sin(x); } }; - template<> struct cos_impl { inline static const mpfr::mpreal run(const mpfr::mpreal& x) { return mpfr::cos(x); } }; - template<> struct pow_impl { inline static const mpfr::mpreal run(const mpfr::mpreal& x, const mpfr::mpreal& y) { return mpfr::pow(x, y); } }; - bool isMuchSmallerThan(const mpfr::mpreal& a, const mpfr::mpreal& b, const mpfr::mpreal& prec) { return mpfr::abs(a) <= mpfr::abs(b) * prec; @@ -148,7 +138,7 @@ int main() inline bool isApprox(const mpfr::mpreal& a, const mpfr::mpreal& b, const mpfr::mpreal& prec) { - return mpfr::abs(a - b) <= (mpfr::min)(mpfr::abs(a), mpfr::abs(b)) * prec; + return mpfr::abs(a - b) <= (mpfr::min)(mpfr::abs(a), mpfr::abs(b)) * prec; } inline bool isApproxOrLessThan(const mpfr::mpreal& a, const mpfr::mpreal& b, const mpfr::mpreal& prec) diff --git a/unsupported/test/CMakeLists.txt b/unsupported/test/CMakeLists.txt index 660bfad41..f8c0ff486 100644 --- a/unsupported/test/CMakeLists.txt +++ b/unsupported/test/CMakeLists.txt @@ -80,7 +80,7 @@ ei_add_test(FFT) find_package(MPFR 2.3.0) find_package(GMP) if(MPFR_FOUND) - include_directories(${MPFR_INCLUDES}) + include_directories(${MPFR_INCLUDES} ./mpreal) ei_add_property(EIGEN_TESTED_BACKENDS "MPFR C++, ") set(EIGEN_MPFR_TEST_LIBRARIES ${MPFR_LIBRARIES} ${GMP_LIBRARIES}) ei_add_test(mpreal_support "" "${EIGEN_MPFR_TEST_LIBRARIES}" ) diff --git a/unsupported/test/dlmalloc.c b/unsupported/test/mpreal/dlmalloc.c similarity index 100% rename from unsupported/test/dlmalloc.c rename to unsupported/test/mpreal/dlmalloc.c diff --git a/unsupported/test/dlmalloc.h b/unsupported/test/mpreal/dlmalloc.h similarity index 100% rename from unsupported/test/dlmalloc.h rename to unsupported/test/mpreal/dlmalloc.h diff --git a/unsupported/test/mpreal.cpp b/unsupported/test/mpreal/mpreal.cpp similarity index 100% rename from unsupported/test/mpreal.cpp rename to unsupported/test/mpreal/mpreal.cpp diff --git a/unsupported/test/mpreal.h b/unsupported/test/mpreal/mpreal.h similarity index 100% rename from unsupported/test/mpreal.h rename to unsupported/test/mpreal/mpreal.h diff --git a/unsupported/test/mpreal_support.cpp b/unsupported/test/mpreal_support.cpp index 080510a58..53d388821 100644 --- a/unsupported/test/mpreal_support.cpp +++ b/unsupported/test/mpreal_support.cpp @@ -42,6 +42,6 @@ void test_mpreal_support() } extern "C" { -#include "dlmalloc.c" +#include "mpreal/dlmalloc.c" } -#include "mpreal.cpp" +#include "mpreal/mpreal.cpp"