diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index b774e60e..a7bcb9a8 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -1105,8 +1105,8 @@ inline void eval_divide(mpfr_float_backend& result, lo // // Specialised 3 arg versions of the basic operators: // -template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +template +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_add(a.data(), x.data(), y.data(), GMP_RNDN); } @@ -1139,8 +1139,8 @@ inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_bac else mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +template +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_sub(a.data(), x.data(), y.data(), GMP_RNDN); } @@ -1174,8 +1174,8 @@ inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_floa mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +template +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { if ((void*)&x == (void*)&y) mpfr_sqr(a.data(), x.data(), GMP_RNDN); @@ -1215,8 +1215,8 @@ inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_floa mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +template +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_div(a.data(), x.data(), y.data(), GMP_RNDN); } @@ -1632,6 +1632,9 @@ template <> struct number_category >::type> : public mpl::int_ {}; +template +struct is_equivalent_number_type, backends::mpfr_float_backend > : public mpl::true_ {}; + using boost::multiprecision::backends::mpfr_float_backend; typedef number > mpfr_float_50; diff --git a/test/test_arithmetic_mpfr_50_mixed.cpp b/test/test_arithmetic_mpfr_50_mixed.cpp new file mode 100644 index 00000000..5810e09b --- /dev/null +++ b/test/test_arithmetic_mpfr_50_mixed.cpp @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt + +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#endif + +#include +#define TEST_MPFR +#include "test_arithmetic.hpp" + +template <> +struct related_type +{ + typedef boost::multiprecision::mpfr_float_50 type; +}; + +int main() +{ + test(); + return boost::report_errors(); +}