Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r84295 - in branches/release: boost/multiprecision boost/multiprecision/cpp_int boost/multiprecision/detail libs/multiprecision libs/multiprecision/config libs/multiprecision/doc libs/multiprecision/doc/html libs/multiprecision/doc/html/boost_multiprecision libs/multiprecision/doc/html/boost_multiprecision/indexes libs/multiprecision/doc/html/boost_multiprecision/map libs/multiprecision/doc/html/boost_multiprecision/perf libs/multiprecision/doc/html/boost_multiprecision/ref libs/multiprecision/doc/html/boost_multiprecision/tut libs/multiprecision/doc/html/boost_multiprecision/tut/floats libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg libs/multiprecision/doc/html/boost_multiprecision/tut/interval libs/multiprecision/doc/html/boost_multiprecision/tut/ints libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs libs/multiprecision/doc/html/boost_multiprecision/tut/misc libs/multiprecision/doc/html/boost_multiprecision/tut/rational libs/multiprecision/example libs/multiprecision/performance libs/multiprecision/test libs/multiprecision/test/coverage libs/multiprecision/test/math libs/multiprecision/test/math/instances
From: john_at_[hidden]
Date: 2013-05-16 06:16:44


Author: johnmaddock
Date: 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
New Revision: 84295
URL: http://svn.boost.org/trac/boost/changeset/84295

Log:
Merge changes from trunk - support for __float128 and user-defined literals.
Added:
   branches/release/boost/multiprecision/cpp_int/literals.hpp
      - copied unchanged from r84294, /trunk/boost/multiprecision/cpp_int/literals.hpp
   branches/release/boost/multiprecision/cpp_int/value_pack.hpp
      - copied unchanged from r84294, /trunk/boost/multiprecision/cpp_int/value_pack.hpp
   branches/release/boost/multiprecision/detail/float_string_cvt.hpp
      - copied unchanged from r84294, /trunk/boost/multiprecision/detail/float_string_cvt.hpp
   branches/release/boost/multiprecision/float128.hpp
      - copied unchanged from r84294, /trunk/boost/multiprecision/float128.hpp
   branches/release/libs/multiprecision/config/has_float128.cpp
      - copied unchanged from r84294, /trunk/libs/multiprecision/config/has_float128.cpp
   branches/release/libs/multiprecision/config/has_intel_quad.cpp
      - copied unchanged from r84294, /trunk/libs/multiprecision/config/has_intel_quad.cpp
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html
      - copied unchanged from r84294, /trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html
   branches/release/libs/multiprecision/example/float128_snips.cpp
      - copied unchanged from r84294, /trunk/libs/multiprecision/example/float128_snips.cpp
   branches/release/libs/multiprecision/test/math/instances/
      - copied from r84294, /trunk/libs/multiprecision/test/math/instances/
   branches/release/libs/multiprecision/test/math/setup.hpp
      - copied unchanged from r84294, /trunk/libs/multiprecision/test/math/setup.hpp
   branches/release/libs/multiprecision/test/test_arithmetic_float_128.cpp
      - copied unchanged from r84294, /trunk/libs/multiprecision/test/test_arithmetic_float_128.cpp
   branches/release/libs/multiprecision/test/test_cpp_int_lit.cpp
      - copied unchanged from r84294, /trunk/libs/multiprecision/test/test_cpp_int_lit.cpp
Properties modified:
   branches/release/boost/multiprecision/ (props changed)
   branches/release/libs/multiprecision/ (props changed)
Text files modified:
   branches/release/boost/multiprecision/cpp_int.hpp | 216 ++++++++++++---------------------------
   branches/release/boost/multiprecision/cpp_int/cpp_int_config.hpp | 16 ++
   branches/release/boost/multiprecision/detail/et_ops.hpp | 215 ++++++++++++++++++++++++---------------
   branches/release/boost/multiprecision/detail/no_et_ops.hpp | 82 +++++++-------
   branches/release/boost/multiprecision/number.hpp | 2
   branches/release/libs/multiprecision/config/Jamfile.v2 | 9 +
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html | 7
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html | 15 ++
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html | 12 +
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html | 27 ++++
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/intro.html | 8
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/map.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/ack.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/faq.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/todo.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/overhead.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html | 18 +-
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/internals.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut.html | 9
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html | 41 +++++++
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html | 12 +-
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/gmp_float.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html | 14 +-
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/mpfi.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html | 12 +
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/bitops.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/tom_int.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html | 158 +++++++++++++++++++++++++++-
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/debug_adaptor.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/logged_adaptor.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/visualizers.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/mixed.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/primetest.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html | 6
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/br.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/cpp_rational.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/gmp_rational.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adaptor.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/tommath_rational.html | 4
   branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rounding.html | 4
   branches/release/libs/multiprecision/doc/html/index.html | 9
   branches/release/libs/multiprecision/doc/multiprecision.qbk | 120 +++++++++++++++++++++
   branches/release/libs/multiprecision/example/floating_point_examples.cpp | 1
   branches/release/libs/multiprecision/performance/linpack-benchmark.cpp | 35 ++++++
   branches/release/libs/multiprecision/test/Jamfile.v2 | 133 +++++++++++++++++++++--
   branches/release/libs/multiprecision/test/coverage/Makefile | 208 ++++++++++++++++++++++++++++++++------
   branches/release/libs/multiprecision/test/math/log1p_expm1_test.cpp | 60 ----------
   branches/release/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp | 62 +----------
   branches/release/libs/multiprecision/test/math/test_bessel_i.cpp | 61 +---------
   branches/release/libs/multiprecision/test/math/test_bessel_j.cpp | 61 +---------
   branches/release/libs/multiprecision/test/math/test_bessel_k.cpp | 71 +++----------
   branches/release/libs/multiprecision/test/math/test_bessel_y.cpp | 60 +---------
   branches/release/libs/multiprecision/test/math/test_beta.cpp | 60 +---------
   branches/release/libs/multiprecision/test/math/test_binomial_coeff.cpp | 60 +---------
   branches/release/libs/multiprecision/test/math/test_carlson.cpp | 63 +----------
   branches/release/libs/multiprecision/test/math/test_cbrt.cpp | 59 +---------
   branches/release/libs/multiprecision/test/math/test_digamma.cpp | 59 +---------
   branches/release/libs/multiprecision/test/math/test_ellint_1.cpp | 59 +---------
   branches/release/libs/multiprecision/test/math/test_ellint_2.cpp | 59 +---------
   branches/release/libs/multiprecision/test/math/test_ellint_3.cpp | 68 +++---------
   branches/release/libs/multiprecision/test/math/test_erf.cpp | 69 +++---------
   branches/release/libs/multiprecision/test/math/test_expint.cpp | 68 +++---------
   branches/release/libs/multiprecision/test/math/test_gamma.cpp | 68 +++---------
   branches/release/libs/multiprecision/test/math/test_hermite.cpp | 68 +++---------
   branches/release/libs/multiprecision/test/math/test_ibeta.cpp | 70 +++---------
   branches/release/libs/multiprecision/test/math/test_ibeta_2.cpp | 69 +++---------
   branches/release/libs/multiprecision/test/math/test_ibeta_3.cpp | 60 +---------
   branches/release/libs/multiprecision/test/math/test_ibeta_4.cpp | 61 +---------
   branches/release/libs/multiprecision/test/math/test_ibeta_inv_1.cpp | 60 +---------
   branches/release/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp | 59 +---------
   branches/release/libs/multiprecision/test/math/test_igamma.cpp | 60 +---------
   branches/release/libs/multiprecision/test/math/test_igamma_inv.cpp | 60 +---------
   branches/release/libs/multiprecision/test/math/test_igamma_inva.cpp | 60 +---------
   branches/release/libs/multiprecision/test/math/test_laguerre.cpp | 59 +---------
   branches/release/libs/multiprecision/test/math/test_legendre.cpp | 59 +---------
   branches/release/libs/multiprecision/test/math/test_tgamma_ratio.cpp | 59 +---------
   branches/release/libs/multiprecision/test/math/test_zeta.cpp | 69 +++---------
   branches/release/libs/multiprecision/test/test_acos.cpp | 9 +
   branches/release/libs/multiprecision/test/test_arithmetic.hpp | 3
   branches/release/libs/multiprecision/test/test_arithmetic_cpp_dec_float_1.cpp | 2
   branches/release/libs/multiprecision/test/test_asin.cpp | 9 +
   branches/release/libs/multiprecision/test/test_atan.cpp | 9 +
   branches/release/libs/multiprecision/test/test_constexpr.cpp | 7 +
   branches/release/libs/multiprecision/test/test_cos.cpp | 17 ++
   branches/release/libs/multiprecision/test/test_cosh.cpp | 9 +
   branches/release/libs/multiprecision/test/test_exp.cpp | 15 ++
   branches/release/libs/multiprecision/test/test_float_io.cpp | 23 +++
   branches/release/libs/multiprecision/test/test_fpclassify.cpp | 9 +
   branches/release/libs/multiprecision/test/test_log.cpp | 12 ++
   branches/release/libs/multiprecision/test/test_numeric_limits.cpp | 9 +
   branches/release/libs/multiprecision/test/test_pow.cpp | 8 +
   branches/release/libs/multiprecision/test/test_round.cpp | 12 +
   branches/release/libs/multiprecision/test/test_sin.cpp | 9 +
   branches/release/libs/multiprecision/test/test_sinh.cpp | 9 +
   branches/release/libs/multiprecision/test/test_sqrt.cpp | 13 ++
   branches/release/libs/multiprecision/test/test_tan.cpp | 9 +
   branches/release/libs/multiprecision/test/test_tanh.cpp | 9 +
   128 files changed, 1613 insertions(+), 2140 deletions(-)

Modified: branches/release/boost/multiprecision/cpp_int.hpp
==============================================================================
--- branches/release/boost/multiprecision/cpp_int.hpp (original)
+++ branches/release/boost/multiprecision/cpp_int.hpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -20,10 +20,12 @@
 #include <boost/integer/static_min_max.hpp>
 #include <boost/type_traits/common_type.hpp>
 #include <boost/multiprecision/cpp_int/checked.hpp>
+#ifdef BOOST_MP_USER_DEFINED_LITERALS
+#include <boost/multiprecision/cpp_int/value_pack.hpp>
+#endif
 
 namespace boost{
 namespace multiprecision{
-
 namespace backends{
 
 #ifdef BOOST_MSVC
@@ -427,6 +429,10 @@
       BOOST_CONSTEXPR data_type() : m_first_limb(0) {}
       BOOST_CONSTEXPR data_type(limb_type i) : m_first_limb(i) {}
       BOOST_CONSTEXPR data_type(double_limb_type i) : m_double_first_limb(i) {}
+#if defined(BOOST_MP_USER_DEFINED_LITERALS)
+ template <limb_type...VALUES>
+ BOOST_CONSTEXPR data_type(literals::detail::value_pack<VALUES...>) : m_data{ VALUES... } {}
+#endif
    } m_wrapper;
    boost::uint16_t m_limbs;
    bool m_sign;
@@ -447,13 +453,22 @@
         m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)),
         m_sign(i < 0) {}
 #endif
+#if defined(BOOST_MP_USER_DEFINED_LITERALS)
+ template <limb_type...VALUES>
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<VALUES...> i)
+ : m_wrapper(i), m_limbs(sizeof...(VALUES)), m_sign(false) {}
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<> i)
+ : m_wrapper(i), m_limbs(1), m_sign(false) {}
+ BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& a, const literals::detail::negate_tag&)
+ : m_wrapper(a.m_wrapper), m_limbs(a.m_limbs), m_sign((a.m_limbs == 1) && (*a.limbs() == 0) ? false : !a.m_sign) {}
+#endif
    //
    // Helper functions for getting at our internal data, and manipulating storage:
    //
    BOOST_MP_FORCEINLINE unsigned size()const BOOST_NOEXCEPT { return m_limbs; }
    BOOST_MP_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return m_wrapper.m_data; }
- BOOST_MP_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; }
- BOOST_MP_FORCEINLINE bool sign()const BOOST_NOEXCEPT { return m_sign; }
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; }
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return m_sign; }
    BOOST_MP_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT
    {
       m_sign = b;
@@ -479,15 +494,10 @@
    }
 
    BOOST_MP_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() : m_wrapper(limb_type(0u)), m_limbs(1), m_sign(false) {}
- BOOST_MP_FORCEINLINE cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs), m_sign(o.m_sign)
- {
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
- std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
-#else
- std::copy(o.limbs(), o.limbs() + o.size(), limbs());
-#endif
- }
+ // Defaulted functions:
+ //BOOST_MP_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& i)BOOST_NOEXCEPT;
    //~cpp_int_base() BOOST_NOEXCEPT {}
+
    void assign(const cpp_int_base& o) BOOST_NOEXCEPT
    {
       if(this != &o)
@@ -570,6 +580,10 @@
       BOOST_CONSTEXPR data_type() : m_first_limb(0) {}
       BOOST_CONSTEXPR data_type(limb_type i) : m_first_limb(i) {}
       BOOST_CONSTEXPR data_type(double_limb_type i) : m_double_first_limb(i) {}
+#if defined(BOOST_MP_USER_DEFINED_LITERALS)
+ template <limb_type...VALUES>
+ BOOST_CONSTEXPR data_type(literals::detail::value_pack<VALUES...>) : m_data{ VALUES... } {}
+#endif
    } m_wrapper;
    limb_type m_limbs;
 
@@ -587,12 +601,19 @@
    BOOST_MP_FORCEINLINE cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT_IF((Checked == unchecked))
       : m_wrapper(double_limb_type(i < 0 ? -i : i)), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)) { if(i < 0) negate(); }
 #endif
+#if defined(BOOST_MP_USER_DEFINED_LITERALS)
+ template <limb_type...VALUES>
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<VALUES...> i)
+ : m_wrapper(i), m_limbs(sizeof...(VALUES)) {}
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<>)
+ : m_wrapper(static_cast<limb_type>(0u)), m_limbs(1) {}
+#endif
    //
    // Helper functions for getting at our internal data, and manipulating storage:
    //
    BOOST_MP_FORCEINLINE unsigned size()const BOOST_NOEXCEPT { return m_limbs; }
    BOOST_MP_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return m_wrapper.m_data; }
- BOOST_MP_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; }
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; }
    BOOST_MP_FORCEINLINE BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; }
    BOOST_MP_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT_IF((Checked == unchecked)) { if(b) negate(); }
    BOOST_MP_FORCEINLINE void resize(unsigned new_size, unsigned min_size) BOOST_NOEXCEPT_IF((Checked == unchecked))
@@ -610,16 +631,10 @@
 
    BOOST_MP_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT
       : m_wrapper(limb_type(0u)), m_limbs(1) {}
- BOOST_MP_FORCEINLINE cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT
- : m_limbs(o.m_limbs)
- {
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
- std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
-#else
- std::copy(o.limbs(), o.limbs() + o.size(), limbs());
-#endif
- }
+ // Defaulted functions:
+ //BOOST_MP_FORCEINLINE cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT;
    //~cpp_int_base() BOOST_NOEXCEPT {}
+
    BOOST_MP_FORCEINLINE void assign(const cpp_int_base& o) BOOST_NOEXCEPT
    {
       if(this != &o)
@@ -761,12 +776,24 @@
    template <class F>
    BOOST_MP_FORCEINLINE cpp_int_base(F i, typename enable_if_c<is_floating_point<F>::value && (Checked == checked)>::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked))
       : m_data(static_cast<local_limb_type>(std::fabs(i))), m_sign(i < 0) { check_in_range(i); }
+#if defined(BOOST_MP_USER_DEFINED_LITERALS)
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<>)
+ : m_data(static_cast<local_limb_type>(0u)), m_sign(false) {}
+ template <limb_type a>
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<a>)
+ : m_data(static_cast<local_limb_type>(a)), m_sign(false) {}
+ template <limb_type a, limb_type b>
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<a, b>)
+ : m_data(static_cast<local_limb_type>(a) | (static_cast<local_limb_type>(b) << bits_per_limb)), m_sign(false) {}
+ BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& a, const literals::detail::negate_tag&)
+ : m_data(a.m_data), m_sign(a.m_data ? !a.m_sign : false) {}
+#endif
    //
    // Helper functions for getting at our internal data, and manipulating storage:
    //
    BOOST_MP_FORCEINLINE BOOST_CONSTEXPR unsigned size()const BOOST_NOEXCEPT { return 1; }
    BOOST_MP_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return &m_data; }
- BOOST_MP_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; }
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; }
    BOOST_MP_FORCEINLINE bool sign()const BOOST_NOEXCEPT { return m_sign; }
    BOOST_MP_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT
    {
@@ -891,12 +918,22 @@
       if(i < 0)
          negate();
    }
+#if defined(BOOST_MP_USER_DEFINED_LITERALS)
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<>)
+ : m_data(static_cast<local_limb_type>(0u)) {}
+ template <limb_type a>
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<a>)
+ : m_data(static_cast<local_limb_type>(a)) {}
+ template <limb_type a, limb_type b>
+ BOOST_CONSTEXPR cpp_int_base(literals::detail::value_pack<a, b>)
+ : m_data(static_cast<local_limb_type>(a) | (static_cast<local_limb_type>(b) << bits_per_limb)) {}
+#endif
    //
    // Helper functions for getting at our internal data, and manipulating storage:
    //
    BOOST_MP_FORCEINLINE BOOST_CONSTEXPR unsigned size()const BOOST_NOEXCEPT { return 1; }
    BOOST_MP_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return &m_data; }
- BOOST_MP_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; }
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; }
    BOOST_MP_FORCEINLINE BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; }
    BOOST_MP_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT_IF((Checked == unchecked))
    {
@@ -949,6 +986,9 @@
 #ifdef BOOST_LITTLE_ENDIAN
       || is_same<Arg, double_limb_type>::value || is_same<Arg, signed_double_limb_type>::value
 #endif
+#if defined(BOOST_MP_USER_DEFINED_LITERALS)
+ || literals::detail::is_value_pack<Arg>::value
+#endif
       || (is_trivial_cpp_int<Base>::value && is_arithmetic<Arg>::value),
       mpl::true_,
       mpl::false_
@@ -1095,132 +1135,11 @@
          mpl::bool_<is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>());
       return *this;
    }
-#if 0
- template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, class Allocator2>
- cpp_int_backend(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>& other, typename enable_if_c<is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value >::type* = 0)
- : base_type()
- {
- *this = static_cast<
- typename boost::multiprecision::detail::canonical<
- typename cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>::local_limb_type,
- cpp_int_backend<MinBits, MaxBits, SignType, Allocator>
- >::type
- >(*other.limbs());
- this->sign(other.sign());
- }
- template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, class Allocator2>
- typename enable_if_c<is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value, cpp_int_backend&>::type
- operator=(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>& other)
- {
- *this = static_cast<
- typename boost::multiprecision::detail::canonical<
- typename cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>::local_limb_type,
- cpp_int_backend<MinBits, MaxBits, SignType, Allocator>
- >::type
- >(*other.limbs());
- this->sign(other.sign());
- return *this;
- }
-
- template <unsigned MinBits2, unsigned MaxBits2, bool SignType2, class Allocator2>
- cpp_int_backend(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>& other,
- typename enable_if_c<
- ((is_signed_number<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value || !is_signed_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value)
- && (!is_void<Allocator>::value || (is_void<Allocator2>::value && (MinBits >= MinBits2)))
- && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value
- && !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value)
- >::type* = 0)
- : base_type()
- {
- this->resize(other.size(), other_size());
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
- std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), stdext::checked_array_iterator<limb_pointer>(this->limbs(), this->size()));
-#else
- std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs());
-#endif
- this->sign(other.sign());
- }
-
- template <unsigned MinBits2, unsigned MaxBits2, bool SignType2, class Allocator2>
- explicit cpp_int_backend(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>& other,
- typename enable_if_c<
- (!((is_signed_number<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value || !is_signed_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value)
- && (!is_void<Allocator>::value || (is_void<Allocator2>::value && (MinBits >= MinBits2))))
- && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value
- && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value)
- >::type* = 0)
- : base_type()
- {
- double_limb_type v = *other.limbs();
- if(other.size() > 1)
- v |= static_cast<double_limb_type>(other.limbs()[1]) << bits_per_limb;
- *this = v;
- this->sign(other.sign());
- }
-
- template <unsigned MinBits2, unsigned MaxBits2, bool SignType2, class Allocator2>
- explicit cpp_int_backend(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>& other,
- typename enable_if_c<
- (!((is_signed_number<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value || !is_signed_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value))
- && (!is_void<Allocator>::value || (is_void<Allocator2>::value && (MinBits >= MinBits2)))
- && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value
- && !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value)
- >::type* = 0)
- : base_type()
- {
- this->resize(other.size(), other.size());
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
- std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), stdext::checked_array_iterator<limb_pointer>(this->limbs(), this->size()));
-#else
- std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs());
-#endif
- this->sign(other.sign());
- }
-
- template <unsigned MinBits2, unsigned MaxBits2, bool SignType2, class Allocator2>
- explicit cpp_int_backend(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>& other,
- typename enable_if_c<
- (!((is_signed_number<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value || !is_signed_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value))
- && (!is_void<Allocator>::value || (is_void<Allocator2>::value && (MinBits >= MinBits2)))
- && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value
- && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value)
- >::type* = 0)
- : base_type()
- {
- double_limb_type v = *other.limbs();
- if(other.size() > 1)
- v |= static_cast<double_limb_type>(other.limbs()[1]) << bits_per_limb;
- *this = v;
- this->sign(other.sign());
- }
-
- template <unsigned MinBits2, unsigned MaxBits2, bool SignType2, class Allocator2>
- typename enable_if_c<(!is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value
- && !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value), cpp_int_backend&>::type
- operator=(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>& other)
- {
- this->resize(other.size(), other.size());
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
- std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), stdext::checked_array_iterator<limb_pointer>(this->limbs(), this->size()));
-#else
- std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs());
+#ifdef BOOST_MP_USER_DEFINED_LITERALS
+ BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& a, const literals::detail::negate_tag& tag)
+ : base_type(static_cast<const base_type&>(a), tag){}
 #endif
- this->sign(other.sign());
- return *this;
- }
 
- template <unsigned MinBits2, unsigned MaxBits2, bool SignType2, class Allocator2>
- typename enable_if_c<(!is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2> >::value
- && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Allocator> >::value), cpp_int_backend&>::type
- operator=(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>& other)
- {
- double_limb_type v = *other.limbs();
- if(other.size() > 1)
- v |= static_cast<double_limb_type>(other.limbs()[1]) << bits_per_limb;
- *this = v;
- this->sign(other.sign());
- }
-#endif
    BOOST_MP_FORCEINLINE cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT_IF((Checked == unchecked) && boost::is_void<Allocator>::value)
    {
       this->assign(o);
@@ -1873,5 +1792,8 @@
 #include <boost/multiprecision/cpp_int/bitwise.hpp>
 #include <boost/multiprecision/cpp_int/misc.hpp>
 #include <boost/multiprecision/cpp_int/limits.hpp>
+#ifdef BOOST_MP_USER_DEFINED_LITERALS
+#include <boost/multiprecision/cpp_int/literals.hpp>
+#endif
 
 #endif

Modified: branches/release/boost/multiprecision/cpp_int/cpp_int_config.hpp
==============================================================================
--- branches/release/boost/multiprecision/cpp_int/cpp_int_config.hpp (original)
+++ branches/release/boost/multiprecision/cpp_int/cpp_int_config.hpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -21,8 +21,8 @@
 // These traits calculate the largest type in the list
 // [unsigned] long long, long, int, which has the specified number
 // of bits. Note that intN_t and boost::int_t<N> find the first
-// member of the above list, not the last. We want the last in the
-// list to ensure that mixed arithmetic operations are as efficient
+// member of the above list, not the last. We want the last in the
+// list to ensure that mixed arithmetic operations are as efficient
 // as possible.
 //
 template <unsigned N>
@@ -74,7 +74,7 @@
 
 inline limb_type block_multiplier(unsigned count)
 {
- static const limb_type values[digits_per_block_10]
+ static const limb_type values[digits_per_block_10]
       = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000, 1000000000000000, 10000000000000000, 100000000000000000, 1000000000000000000 };
    BOOST_ASSERT(count < digits_per_block_10);
    return values[count];
@@ -110,7 +110,7 @@
 
 inline limb_type block_multiplier(unsigned count)
 {
- static const limb_type values[digits_per_block_10]
+ static const limb_type values[digits_per_block_10]
       = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
    BOOST_ASSERT(count < digits_per_block_10);
    return values[count];
@@ -151,5 +151,13 @@
 
 }}
 
+//
+// Figure out whether to support user-defined-literals or not:
+//
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_USER_DEFINED_LITERALS) \
+ && !defined(BOOST_NO_CXX11_CONSTEXPR)
+# define BOOST_MP_USER_DEFINED_LITERALS
+#endif
+
 #endif // BOOST_MP_CPP_INT_CORE_HPP
 

Modified: branches/release/boost/multiprecision/detail/et_ops.hpp
==============================================================================
--- branches/release/boost/multiprecision/detail/et_ops.hpp (original)
+++ branches/release/boost/multiprecision/detail/et_ops.hpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -14,25 +14,29 @@
 // Unary operators first:
 //
 template <class B, expression_template_option ExpressionTemplates>
-inline const number<B, ExpressionTemplates>& operator + (const number<B, ExpressionTemplates>& v) { return v; }
+inline BOOST_CONSTEXPR const number<B, ExpressionTemplates>& operator + (const number<B, ExpressionTemplates>& v) { return v; }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& operator + (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& v) { return v; }
+inline BOOST_CONSTEXPR const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& operator + (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& v) { return v; }
 template <class B>
-inline detail::expression<detail::negate, number<B, et_on> > operator - (const number<B, et_on>& v)
+inline detail::expression<detail::negate, number<B, et_on> > operator - (const number<B, et_on>& v)
 {
    BOOST_STATIC_ASSERT_MSG(is_signed_number<B>::value, "Negating an unsigned type results in ill-defined behavior.");
- return detail::expression<detail::negate, number<B, et_on> >(v);
+ return detail::expression<detail::negate, number<B, et_on> >(v);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::negate, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > operator - (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& v)
-{
+inline detail::expression<detail::negate, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > operator - (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& v)
+{
    BOOST_STATIC_ASSERT_MSG((is_signed_number<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value), "Negating an unsigned type results in ill-defined behavior.");
- return detail::expression<detail::negate, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(v);
+ return detail::expression<detail::negate, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(v);
 }
 template <class B>
-inline detail::expression<detail::complement_immediates, number<B, et_on> > operator ~ (const number<B, et_on>& v) { return detail::expression<detail::complement_immediates, number<B, et_on> >(v); }
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::complement_immediates, number<B, et_on> > >::type
+ operator ~ (const number<B, et_on>& v) { return detail::expression<detail::complement_immediates, number<B, et_on> >(v); }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::bitwise_complement, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > operator ~ (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& v) { return detail::expression<detail::bitwise_complement, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(v); }
+inline typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
+ detail::expression<detail::bitwise_complement, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
+ operator ~ (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& v) { return detail::expression<detail::bitwise_complement, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(v); }
 //
 // Then addition:
 //
@@ -88,14 +92,14 @@
 // Fused multiply add:
 //
 template <class V, class Arg1, class Arg2, class Arg3, class Arg4>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
+inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
    detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V> >::type
    operator + (const V& a, const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& b)
 {
    return detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V>(b.left(), b.right(), a);
 }
 template <class Arg1, class Arg2, class Arg3, class Arg4, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
+inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
    detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V> >::type
    operator + (const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
 {
@@ -117,7 +121,7 @@
 // Fused multiply subtract:
 //
 template <class V, class Arg1, class Arg2, class Arg3, class Arg4>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
+inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
    detail::expression<detail::negate, detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V> > >::type
    operator - (const V& a, const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& b)
 {
@@ -125,7 +129,7 @@
       (detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V>(b.left(), b.right(), a));
 }
 template <class Arg1, class Arg2, class Arg3, class Arg4, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
+inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
    detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V> >::type
    operator - (const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
 {
@@ -523,50 +527,60 @@
 // Modulus:
 //
 template <class B>
-inline detail::expression<detail::modulus_immediates, number<B, et_on>, number<B, et_on> >
- operator % (const number<B, et_on>& a, const number<B, et_on>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::modulus_immediates, number<B, et_on>, number<B, et_on> > >::type
+ operator % (const number<B, et_on>& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::modulus_immediates, number<B, et_on>, number<B, et_on> >(a, b);
 }
 template <class B, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::modulus_immediates, number<B, et_on>, V > >::type
+inline typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
+ detail::expression<detail::modulus_immediates, number<B, et_on>, V > >::type
    operator % (const number<B, et_on>& a, const V& b)
 {
    return detail::expression<detail::modulus_immediates, number<B, et_on>, V >(a, b);
 }
 template <class V, class B>
-inline typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::modulus_immediates, V, number<B, et_on> > >::type
- operator % (const V& a, const number<B, et_on>& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
+ detail::expression<detail::modulus_immediates, V, number<B, et_on> > >::type
+ operator % (const V& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::modulus_immediates, V, number<B, et_on> >(a, b);
 }
 template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::modulus, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >
- operator % (const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::modulus, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
+ operator % (const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
 {
    return detail::expression<detail::modulus, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
-inline detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >
- operator % (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> > >::type
+ operator % (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
-inline detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >
- operator % (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
+inline typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
+ detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> > >::type
+ operator % (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
 {
    return detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V > >::type
- operator % (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value
+ && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
+ detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V > >::type
+ operator % (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
 {
    return detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V >(a, b);
 }
 template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::modulus, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
- operator % (const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value
+ && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
+ detail::expression<detail::modulus, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
+ operator % (const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
 {
    return detail::expression<detail::modulus, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
 }
@@ -574,14 +588,15 @@
 // Left shift:
 //
 template <class B, class I>
-inline typename enable_if<is_integral<I>, detail::expression<detail::shift_left, number<B, et_on>, I > >::type
+inline typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), detail::expression<detail::shift_left, number<B, et_on>, I > >::type
    operator << (const number<B, et_on>& a, const I& b)
 {
    return detail::expression<detail::shift_left, number<B, et_on>, I>(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class I>
-inline typename enable_if<is_integral<I>, detail::expression<detail::shift_left, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I> >::type
- operator << (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const I& b)
+inline typename enable_if_c<is_integral<I>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
+ detail::expression<detail::shift_left, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I> >::type
+ operator << (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const I& b)
 {
    return detail::expression<detail::shift_left, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I>(a, b);
 }
@@ -589,14 +604,17 @@
 // Right shift:
 //
 template <class B, class I>
-inline typename enable_if<is_integral<I>, detail::expression<detail::shift_right, number<B, et_on>, I > >::type
- operator >> (const number<B, et_on>& a, const I& b)
+inline typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer),
+ detail::expression<detail::shift_right, number<B, et_on>, I > >::type
+ operator >> (const number<B, et_on>& a, const I& b)
 {
    return detail::expression<detail::shift_right, number<B, et_on>, I>(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class I>
-inline typename enable_if<is_integral<I>, detail::expression<detail::shift_right, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I> >::type
- operator >> (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const I& b)
+inline typename enable_if_c<is_integral<I>::value
+ && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
+ detail::expression<detail::shift_right, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I> >::type
+ operator >> (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const I& b)
 {
    return detail::expression<detail::shift_right, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I>(a, b);
 }
@@ -604,50 +622,62 @@
 // Bitwise AND:
 //
 template <class B>
-inline detail::expression<detail::bitwise_and_immediates, number<B, et_on>, number<B, et_on> >
- operator & (const number<B, et_on>& a, const number<B, et_on>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::bitwise_and_immediates, number<B, et_on>, number<B, et_on> > >::type
+ operator & (const number<B, et_on>& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::bitwise_and_immediates, number<B, et_on>, number<B, et_on> >(a, b);
 }
 template <class B, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::bitwise_and_immediates, number<B, et_on>, V > >::type
- operator & (const number<B, et_on>& a, const V& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value
+ && (number_category<B>::value == number_kind_integer),
+ detail::expression<detail::bitwise_and_immediates, number<B, et_on>, V > >::type
+ operator & (const number<B, et_on>& a, const V& b)
 {
    return detail::expression<detail::bitwise_and_immediates, number<B, et_on>, V >(a, b);
 }
 template <class V, class B>
-inline typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::bitwise_and_immediates, V, number<B, et_on> > >::type
- operator & (const V& a, const number<B, et_on>& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value
+ && (number_category<B>::value == number_kind_integer),
+ detail::expression<detail::bitwise_and_immediates, V, number<B, et_on> > >::type
+ operator & (const V& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::bitwise_and_immediates, V, number<B, et_on> >(a, b);
 }
 template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::bitwise_and, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >
- operator & (const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::bitwise_and, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
+ operator & (const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
 {
    return detail::expression<detail::bitwise_and, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
-inline detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >
- operator & (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> > >::type
+ operator & (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
-inline detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >
- operator & (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
+inline typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
+ detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> > >::type
+ operator & (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
 {
    return detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V > >::type
- operator & (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value
+ && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
+ detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V > >::type
+ operator & (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
 {
    return detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V >(a, b);
 }
 template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::bitwise_and, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
- operator & (const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value
+ && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
+ detail::expression<detail::bitwise_and, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
+ operator & (const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
 {
    return detail::expression<detail::bitwise_and, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
 }
@@ -655,50 +685,62 @@
 // Bitwise OR:
 //
 template <class B>
-inline detail::expression<detail::bitwise_or_immediates, number<B, et_on>, number<B, et_on> >
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::bitwise_or_immediates, number<B, et_on>, number<B, et_on> > >::type
    operator| (const number<B, et_on>& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::bitwise_or_immediates, number<B, et_on>, number<B, et_on> >(a, b);
 }
 template <class B, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::bitwise_or_immediates, number<B, et_on>, V > >::type
- operator| (const number<B, et_on>& a, const V& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value
+ && (number_category<B>::value == number_kind_integer),
+ detail::expression<detail::bitwise_or_immediates, number<B, et_on>, V > >::type
+ operator| (const number<B, et_on>& a, const V& b)
 {
    return detail::expression<detail::bitwise_or_immediates, number<B, et_on>, V >(a, b);
 }
 template <class V, class B>
-inline typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::bitwise_or_immediates, V, number<B, et_on> > >::type
- operator| (const V& a, const number<B, et_on>& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value
+ && (number_category<B>::value == number_kind_integer),
+ detail::expression<detail::bitwise_or_immediates, V, number<B, et_on> > >::type
+ operator| (const V& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::bitwise_or_immediates, V, number<B, et_on> >(a, b);
 }
 template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::bitwise_or, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >
- operator| (const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::bitwise_or, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
+ operator| (const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
 {
    return detail::expression<detail::bitwise_or, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
-inline detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >
- operator| (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> > >::type
+ operator| (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
-inline detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >
- operator| (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
+inline typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
+ detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> > >::type
+ operator| (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
 {
    return detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V > >::type
- operator| (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value
+ && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
+ detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V > >::type
+ operator| (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
 {
    return detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V >(a, b);
 }
 template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::bitwise_or, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
- operator| (const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value
+ && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
+ detail::expression<detail::bitwise_or, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
+ operator| (const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
 {
    return detail::expression<detail::bitwise_or, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
 }
@@ -706,49 +748,60 @@
 // Bitwise XOR:
 //
 template <class B>
-inline detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, number<B, et_on> >
- operator^ (const number<B, et_on>& a, const number<B, et_on>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, number<B, et_on> > >::type
+ operator^ (const number<B, et_on>& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, number<B, et_on> >(a, b);
 }
 template <class B, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, V > >::type
- operator^ (const number<B, et_on>& a, const V& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value
+ && (number_category<B>::value == number_kind_integer),
+ detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, V > >::type
+ operator^ (const number<B, et_on>& a, const V& b)
 {
    return detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, V >(a, b);
 }
 template <class V, class B>
-inline typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::bitwise_xor_immediates, V, number<B, et_on> > >::type
- operator^ (const V& a, const number<B, et_on>& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value
+ && (number_category<B>::value == number_kind_integer),
+ detail::expression<detail::bitwise_xor_immediates, V, number<B, et_on> > >::type
+ operator^ (const V& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::bitwise_xor_immediates, V, number<B, et_on> >(a, b);
 }
 template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::bitwise_xor, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >
- operator^ (const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::bitwise_xor, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
+ operator^ (const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
 {
    return detail::expression<detail::bitwise_xor, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
-inline detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >
- operator^ (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
+inline typename enable_if_c<number_category<B>::value == number_kind_integer,
+ detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> > >::type
+ operator^ (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
 {
    return detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
-inline detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >
- operator^ (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
+inline typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
+ detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> > >::type
+ operator^ (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
 {
    return detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
 }
 template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V > >::type
- operator^ (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
+inline typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value
+ && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
+ detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V > >::type
+ operator^ (const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
 {
    return detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V >(a, b);
 }
 template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
-inline typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::bitwise_xor, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
+inline typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value
+ && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer), detail::expression<detail::bitwise_xor, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
    operator^ (const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
 {
    return detail::expression<detail::bitwise_xor, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);

Modified: branches/release/boost/multiprecision/detail/no_et_ops.hpp
==============================================================================
--- branches/release/boost/multiprecision/detail/no_et_ops.hpp (original)
+++ branches/release/boost/multiprecision/detail/no_et_ops.hpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -20,19 +20,19 @@
 // NOTE: these operators have to be defined after the methods in default_ops.hpp.
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator - (const number<B, et_off>& v)
+BOOST_MP_FORCEINLINE number<B, et_off> operator - (const number<B, et_off>& v)
 {
    BOOST_STATIC_ASSERT_MSG(is_signed_number<B>::value, "Negating an unsigned type results in ill-defined behavior.");
    number<B, et_off> result(v);
    result.backend().negate();
- return BOOST_MP_MOVE(result);
+ return BOOST_MP_MOVE(result);
 }
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator ~ (const number<B, et_off>& v)
+BOOST_MP_FORCEINLINE number<B, et_off> operator ~ (const number<B, et_off>& v)
 {
    number<B, et_off> result;
    eval_complement(result.backend(), v.backend());
- return BOOST_MP_MOVE(result);
+ return BOOST_MP_MOVE(result);
 }
 //
 // Addition:
@@ -154,7 +154,7 @@
 // modulus:
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator % (const number<B, et_off>& a, const number<B, et_off>& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator % (const number<B, et_off>& a, const number<B, et_off>& b)
 {
    number<B, et_off> result;
    using default_ops::eval_modulus;
@@ -162,7 +162,7 @@
    return BOOST_MP_MOVE(result);
 }
 template <class B, class V>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator % (const number<B, et_off>& a, const V& b)
 {
    number<B, et_off> result;
@@ -171,7 +171,7 @@
    return BOOST_MP_MOVE(result);
 }
 template <class V, class B>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator % (const V& a, const number<B, et_off>& b)
 {
    number<B, et_off> result;
@@ -183,7 +183,7 @@
 // Bitwise or:
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator | (const number<B, et_off>& a, const number<B, et_off>& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator | (const number<B, et_off>& a, const number<B, et_off>& b)
 {
    number<B, et_off> result;
    using default_ops::eval_bitwise_or;
@@ -191,7 +191,7 @@
    return BOOST_MP_MOVE(result);
 }
 template <class B, class V>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator | (const number<B, et_off>& a, const V& b)
 {
    number<B, et_off> result;
@@ -200,7 +200,7 @@
    return BOOST_MP_MOVE(result);
 }
 template <class V, class B>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator | (const V& a, const number<B, et_off>& b)
 {
    number<B, et_off> result;
@@ -212,7 +212,7 @@
 // Bitwise xor:
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator ^ (const number<B, et_off>& a, const number<B, et_off>& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator ^ (const number<B, et_off>& a, const number<B, et_off>& b)
 {
    number<B, et_off> result;
    using default_ops::eval_bitwise_xor;
@@ -220,7 +220,7 @@
    return BOOST_MP_MOVE(result);
 }
 template <class B, class V>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator ^ (const number<B, et_off>& a, const V& b)
 {
    number<B, et_off> result;
@@ -229,7 +229,7 @@
    return BOOST_MP_MOVE(result);
 }
 template <class V, class B>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator ^ (const V& a, const number<B, et_off>& b)
 {
    number<B, et_off> result;
@@ -241,7 +241,7 @@
 // Bitwise and:
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator & (const number<B, et_off>& a, const number<B, et_off>& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator & (const number<B, et_off>& a, const number<B, et_off>& b)
 {
    number<B, et_off> result;
    using default_ops::eval_bitwise_and;
@@ -249,7 +249,7 @@
    return BOOST_MP_MOVE(result);
 }
 template <class B, class V>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator & (const number<B, et_off>& a, const V& b)
 {
    number<B, et_off> result;
@@ -258,7 +258,7 @@
    return BOOST_MP_MOVE(result);
 }
 template <class V, class B>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator & (const V& a, const number<B, et_off>& b)
 {
    number<B, et_off> result;
@@ -270,7 +270,7 @@
 // shifts:
 //
 template <class B, class I>
-BOOST_MP_FORCEINLINE typename enable_if<is_integral<I>, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator << (const number<B, et_off>& a, const I& b)
 {
    number<B, et_off> result(a);
@@ -280,7 +280,7 @@
    return BOOST_MP_MOVE(result);
 }
 template <class B, class I>
-BOOST_MP_FORCEINLINE typename enable_if<is_integral<I>, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator >> (const number<B, et_off>& a, const I& b)
 {
    number<B, et_off> result(a);
@@ -303,17 +303,17 @@
 // semantics help a great deal in return by value, so performance is still pretty good...
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator - (number<B, et_off>&& v)
+BOOST_MP_FORCEINLINE number<B, et_off> operator - (number<B, et_off>&& v)
 {
    BOOST_STATIC_ASSERT_MSG(is_signed_number<B>::value, "Negating an unsigned type results in ill-defined behavior.");
    v.backend().negate();
- return static_cast<number<B, et_off>&&>(v);
+ return static_cast<number<B, et_off>&&>(v);
 }
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator ~ (number<B, et_off>&& v)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator ~ (number<B, et_off>&& v)
 {
    eval_complement(v.backend(), v.backend());
- return static_cast<number<B, et_off>&&>(v);
+ return static_cast<number<B, et_off>&&>(v);
 }
 //
 // Addition:
@@ -459,14 +459,14 @@
 // modulus:
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator % (number<B, et_off>&& a, const number<B, et_off>& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator % (number<B, et_off>&& a, const number<B, et_off>& b)
 {
    using default_ops::eval_modulus;
    eval_modulus(a.backend(), b.backend());
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class B, class V>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator % (number<B, et_off>&& a, const V& b)
 {
    using default_ops::eval_modulus;
@@ -477,28 +477,28 @@
 // Bitwise or:
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator | (number<B, et_off>&& a, const number<B, et_off>& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator | (number<B, et_off>&& a, const number<B, et_off>& b)
 {
    using default_ops::eval_bitwise_or;
    eval_bitwise_or(a.backend(), b.backend());
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator | (const number<B, et_off>& a, number<B, et_off>&& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator | (const number<B, et_off>& a, number<B, et_off>&& b)
 {
    using default_ops::eval_bitwise_or;
    eval_bitwise_or(b.backend(), a.backend());
    return static_cast<number<B, et_off>&&>(b);
 }
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator | (number<B, et_off>&& a, number<B, et_off>&& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator | (number<B, et_off>&& a, number<B, et_off>&& b)
 {
    using default_ops::eval_bitwise_or;
    eval_bitwise_or(a.backend(), b.backend());
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class B, class V>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator | (number<B, et_off>&& a, const V& b)
 {
    using default_ops::eval_bitwise_or;
@@ -506,7 +506,7 @@
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class V, class B>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator | (const V& a, number<B, et_off>&& b)
 {
    using default_ops::eval_bitwise_or;
@@ -517,28 +517,28 @@
 // Bitwise xor:
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator ^ (number<B, et_off>&& a, const number<B, et_off>& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator ^ (number<B, et_off>&& a, const number<B, et_off>& b)
 {
    using default_ops::eval_bitwise_xor;
    eval_bitwise_xor(a.backend(), b.backend());
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator ^ (const number<B, et_off>& a, number<B, et_off>&& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator ^ (const number<B, et_off>& a, number<B, et_off>&& b)
 {
    using default_ops::eval_bitwise_xor;
    eval_bitwise_xor(b.backend(), a.backend());
    return static_cast<number<B, et_off>&&>(b);
 }
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator ^ (number<B, et_off>&& a, number<B, et_off>&& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator ^ (number<B, et_off>&& a, number<B, et_off>&& b)
 {
    using default_ops::eval_bitwise_xor;
    eval_bitwise_xor(a.backend(), b.backend());
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class B, class V>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator ^ (number<B, et_off>&& a, const V& b)
 {
    using default_ops::eval_bitwise_xor;
@@ -546,7 +546,7 @@
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class V, class B>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator ^ (const V& a, number<B, et_off>&& b)
 {
    using default_ops::eval_bitwise_xor;
@@ -557,28 +557,28 @@
 // Bitwise and:
 //
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator & (number<B, et_off>&& a, const number<B, et_off>& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator & (number<B, et_off>&& a, const number<B, et_off>& b)
 {
    using default_ops::eval_bitwise_and;
    eval_bitwise_and(a.backend(), b.backend());
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator & (const number<B, et_off>& a, number<B, et_off>&& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator & (const number<B, et_off>& a, number<B, et_off>&& b)
 {
    using default_ops::eval_bitwise_and;
    eval_bitwise_and(b.backend(), a.backend());
    return static_cast<number<B, et_off>&&>(b);
 }
 template <class B>
-BOOST_MP_FORCEINLINE number<B, et_off> operator & (number<B, et_off>&& a, number<B, et_off>&& b)
+BOOST_MP_FORCEINLINE typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator & (number<B, et_off>&& a, number<B, et_off>&& b)
 {
    using default_ops::eval_bitwise_and;
    eval_bitwise_and(a.backend(), b.backend());
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class B, class V>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator & (number<B, et_off>&& a, const V& b)
 {
    using default_ops::eval_bitwise_and;
@@ -586,7 +586,7 @@
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class V, class B>
-BOOST_MP_FORCEINLINE typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator & (const V& a, number<B, et_off>&& b)
 {
    using default_ops::eval_bitwise_and;
@@ -597,7 +597,7 @@
 // shifts:
 //
 template <class B, class I>
-BOOST_MP_FORCEINLINE typename enable_if<is_integral<I>, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator << (number<B, et_off>&& a, const I& b)
 {
    using default_ops::eval_left_shift;
@@ -605,7 +605,7 @@
    return static_cast<number<B, et_off>&&>(a);
 }
 template <class B, class I>
-BOOST_MP_FORCEINLINE typename enable_if<is_integral<I>, number<B, et_off> >::type
+BOOST_MP_FORCEINLINE typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
    operator >> (number<B, et_off>&& a, const I& b)
 {
    using default_ops::eval_right_shift;

Modified: branches/release/boost/multiprecision/number.hpp
==============================================================================
--- branches/release/boost/multiprecision/number.hpp (original)
+++ branches/release/boost/multiprecision/number.hpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -669,7 +669,7 @@
    {
       return m_backend;
    }
- BOOST_MP_FORCEINLINE const Backend& backend()const BOOST_NOEXCEPT
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR const Backend& backend()const BOOST_NOEXCEPT
    {
       return m_backend;
    }

Modified: branches/release/libs/multiprecision/config/Jamfile.v2
==============================================================================
--- branches/release/libs/multiprecision/config/Jamfile.v2 (original)
+++ branches/release/libs/multiprecision/config/Jamfile.v2 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -39,6 +39,7 @@
 lib gmp ;
 lib mpfr ;
 lib mpfi ;
+lib quadmath ;
 
 exe has_gmp : has_gmp.cpp gmp :
       <include>$(gmp_path) <include>$(gmp_path)/mpfr <include>$(gmp_path)/gmpfrxx ;
@@ -48,8 +49,16 @@
       <include>$(mpfr_path) <include>$(gmp_path)/mpfr <include>$(gmp_path)/gmpfrxx <include>$(gmp_path) ;
 obj has_tommath : has_tommath.cpp :
       <include>$(tommath_path) ;
+exe has_float128 : has_float128.cpp quadmath ;
+exe has_intel_quad : has_intel_quad.cpp : <cxxflags>-Qoption,cpp,--extended_float_type ;
 
 explicit has_gmp ;
 explicit has_mpfr ;
 explicit has_mpfi ;
 explicit has_tommath ;
+explicit has_float128 ;
+explicit has_intel_quad ;
+
+
+
+

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Indexes</title>
 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="prev" href="map/ack.html" title="Acknowledgements">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="map/ack.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes/s01.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_indexes">
+<div class="section boost_multiprecision_indexes">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_multiprecision.indexes"></a><a class="link" href="indexes.html" title="Indexes">Indexes</a>
 </h2></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section">Function Index</span></dt>
 <dt><span class="section">Class Index</span></dt>
 <dt><span class="section">Typedef Index</span></dt>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Function Index</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../indexes.html" title="Indexes">
 <link rel="prev" href="../indexes.html" title="Indexes">
@@ -22,9 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../indexes.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s02.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id990841">
+<div class="section id993545">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id990841"></a>Function Index</h3></div></div></div>
+<a name="id993545"></a>Function Index</h3></div></div></div>
 <p><a class="link" href="s01.html#idx_id_0">A</a> <a class="link" href="s01.html#idx_id_1">B</a> <a class="link" href="s01.html#idx_id_2">C</a> <a class="link" href="s01.html#idx_id_3">D</a> <a class="link" href="s01.html#idx_id_4">E</a> <a class="link" href="s01.html#idx_id_5">F</a> <a class="link" href="s01.html#idx_id_7">I</a> <a class="link" href="s01.html#idx_id_8">L</a> <a class="link" href="s01.html#idx_id_9">M</a> <a class="link" href="s01.html#idx_id_11">O</a> <a class="link" href="s01.html#idx_id_12">P</a> <a class="link" href="s01.html#idx_id_13">R</a> <a class="link" href="s01.html#idx_id_14">S</a> <a class="link" href="s01.html#idx_id_15">T</a> <a class="link" href="s01.html#idx_id_17">V</a> <a class="link" href="s01.html#idx_id_18">Z</a></p>
 <div class="variablelist"><dl class="variablelist">
 <dt>
@@ -87,6 +87,7 @@
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">data</span></p>
 <div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/gmp_float.html" title="gmp_float"><span class="index-entry-level-1">gmp_float</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/ints/gmp_int.html" title="gmp_int"><span class="index-entry-level-1">gmp_int</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/rational/gmp_rational.html" title="gmp_rational"><span class="index-entry-level-1">gmp_rational</span></a></p></li>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Class Index</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../indexes.html" title="Indexes">
 <link rel="prev" href="s01.html" title="Function Index">
@@ -22,10 +22,10 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s01.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s03.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id995230">
+<div class="section id998635">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id995230"></a>Class Index</h3></div></div></div>
-<p><a class="link" href="s02.html#idx_id_21">C</a> <a class="link" href="s02.html#idx_id_22">D</a> <a class="link" href="s02.html#idx_id_23">E</a> <a class="link" href="s02.html#idx_id_25">G</a> <a class="link" href="s02.html#idx_id_26">I</a> <a class="link" href="s02.html#idx_id_27">L</a> <a class="link" href="s02.html#idx_id_28">M</a> <a class="link" href="s02.html#idx_id_29">N</a> <a class="link" href="s02.html#idx_id_34">T</a></p>
+<a name="id998635"></a>Class Index</h3></div></div></div>
+<p><a class="link" href="s02.html#idx_id_21">C</a> <a class="link" href="s02.html#idx_id_22">D</a> <a class="link" href="s02.html#idx_id_23">E</a> <a class="link" href="s02.html#idx_id_24">F</a> <a class="link" href="s02.html#idx_id_25">G</a> <a class="link" href="s02.html#idx_id_26">I</a> <a class="link" href="s02.html#idx_id_27">L</a> <a class="link" href="s02.html#idx_id_28">M</a> <a class="link" href="s02.html#idx_id_29">N</a> <a class="link" href="s02.html#idx_id_34">T</a></p>
 <div class="variablelist"><dl class="variablelist">
 <dt>
 <a name="idx_id_21"></a><span class="term">C</span>
@@ -53,6 +53,13 @@
 <div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">number</span></a></p></li></ul></div>
 </li></ul></div></dd>
 <dt>
+<a name="idx_id_24"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float128_backend</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
 <a name="idx_id_25"></a><span class="term">G</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Typedef Index</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../indexes.html" title="Indexes">
 <link rel="prev" href="s02.html" title="Class Index">
@@ -22,10 +22,10 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s02.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s04.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id995715">
+<div class="section id999154">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id995715"></a>Typedef Index</h3></div></div></div>
-<p><a class="link" href="s03.html#idx_id_40">C</a> <a class="link" href="s03.html#idx_id_45">I</a> <a class="link" href="s03.html#idx_id_46">L</a> <a class="link" href="s03.html#idx_id_47">M</a> <a class="link" href="s03.html#idx_id_52">S</a> <a class="link" href="s03.html#idx_id_53">T</a> <a class="link" href="s03.html#idx_id_54">U</a></p>
+<a name="id999154"></a>Typedef Index</h3></div></div></div>
+<p><a class="link" href="s03.html#idx_id_40">C</a> <a class="link" href="s03.html#idx_id_43">F</a> <a class="link" href="s03.html#idx_id_45">I</a> <a class="link" href="s03.html#idx_id_46">L</a> <a class="link" href="s03.html#idx_id_47">M</a> <a class="link" href="s03.html#idx_id_52">S</a> <a class="link" href="s03.html#idx_id_53">T</a> <a class="link" href="s03.html#idx_id_54">U</a></p>
 <div class="variablelist"><dl class="variablelist">
 <dt>
 <a name="idx_id_40"></a><span class="term">C</span>
@@ -100,6 +100,10 @@
 </li>
 </ul></div></dd>
 <dt>
+<a name="idx_id_43"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-0">float128</span></a></p></li></ul></div></dd>
+<dt>
 <a name="idx_id_45"></a><span class="term">I</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Index</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../indexes.html" title="Indexes">
 <link rel="prev" href="s03.html" title="Typedef Index">
@@ -21,9 +21,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s03.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a>
 </div>
-<div class="section id997854">
+<div class="section id1000840">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id997854"></a>Index</h3></div></div></div>
+<a name="id1000840"></a>Index</h3></div></div></div>
 <p><a class="link" href="s04.html#idx_id_57">A</a> <a class="link" href="s04.html#idx_id_58">B</a> <a class="link" href="s04.html#idx_id_59">C</a> <a class="link" href="s04.html#idx_id_60">D</a> <a class="link" href="s04.html#idx_id_61">E</a> <a class="link" href="s04.html#idx_id_62">F</a> <a class="link" href="s04.html#idx_id_63">G</a> <a class="link" href="s04.html#idx_id_64">I</a> <a class="link" href="s04.html#idx_id_65">L</a> <a class="link" href="s04.html#idx_id_66">M</a> <a class="link" href="s04.html#idx_id_67">N</a> <a class="link" href="s04.html#idx_id_68">O</a> <a class="link" href="s04.html#idx_id_69">P</a> <a class="link" href="s04.html#idx_id_70">R</a> <a class="link" href="s04.html#idx_id_71">S</a> <a class="link" href="s04.html#idx_id_72">T</a> <a class="link" href="s04.html#idx_id_73">U</a> <a class="link" href="s04.html#idx_id_74">V</a> <a class="link" href="s04.html#idx_id_75">Z</a></p>
 <div class="variablelist"><dl class="variablelist">
 <dt>
@@ -75,6 +75,10 @@
 <p><span class="index-entry-level-0">bit_unset</span></p>
 <div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">number</span></a></p></li></ul></div>
 </li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/lits.html" title="Literal Types and constexpr Support"><span class="index-entry-level-1">Literal Types and constexpr Support</span></a></p></li></ul></div>
+</li>
 </ul></div></dd>
 <dt>
 <a name="idx_id_59"></a><span class="term">C</span>
@@ -229,6 +233,7 @@
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">data</span></p>
 <div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/gmp_float.html" title="gmp_float"><span class="index-entry-level-1">gmp_float</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/ints/gmp_int.html" title="gmp_int"><span class="index-entry-level-1">gmp_int</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/rational/gmp_rational.html" title="gmp_rational"><span class="index-entry-level-1">gmp_rational</span></a></p></li>
@@ -503,6 +508,18 @@
 <div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../map/faq.html" title="FAQ"><span class="index-entry-level-1">precision</span></a></p></li></ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float128</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128_backend</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float128_backend</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">fpclassify</span></p>
 <div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">number</span></a></p></li></ul></div>
 </li>
@@ -655,6 +672,10 @@
 <div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/ints/cpp_int.html" title="cpp_int"><span class="index-entry-level-1">cpp_int</span></a></p></li></ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Literal Types and constexpr Support</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/lits.html" title="Literal Types and constexpr Support"><span class="index-entry-level-1">BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">llround</span></p>
 <div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">number</span></a></p></li></ul></div>
 </li>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/intro.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/intro.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/intro.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Introduction</title>
 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="prev" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tut.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_intro">
+<div class="section boost_multiprecision_intro">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_multiprecision.intro"></a><a class="link" href="intro.html" title="Introduction">Introduction</a>
 </h2></div></div></div>
@@ -257,7 +257,7 @@
       to pretty much zero). Note that if we compile with expression templates disabled
       and rvalue-reference support on, then actually still have no wasted memory
       allocations as even though temporaries are created, their contents are moved
- rather than copied. [1]</sup></a>
+ rather than copied. [1]
     </p>
 <div class="important"><table border="0" summary="Important">
 <tr>
@@ -686,7 +686,7 @@
       optimizations on (/Ox), with MPFR 3.0 and MPIR 2.3.0.
     </p>
 <div class="footnotes">
-<br><hr style="width:100; align:left;">
+<br><hr style="width:100; text-align:left;margin-left: 0">
 <div id="ftn.boost_multiprecision.intro.f0" class="footnote"><p>[1]
         The actual number generated will depend on the compiler, how well it optimises
         the code, and whether it supports rvalue references. The number of 11 temporaries

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Roadmap</title>
 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="prev" href="perf/rational_performance.html" title="Rational Type Performance">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="perf/rational_performance.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="map/hist.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_map">
+<div class="section boost_multiprecision_map">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_multiprecision.map"></a><a class="link" href="map.html" title="Roadmap">Roadmap</a>
 </h2></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section">History</span></dt>
 <dt><span class="section">TODO</span></dt>
 <dt><span class="section">FAQ</span></dt>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/ack.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/ack.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/ack.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Acknowledgements</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../map.html" title="Roadmap">
 <link rel="prev" href="faq.html" title="FAQ">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="faq.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../indexes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_map_ack">
+<div class="section boost_multiprecision_map_ack">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.map.ack"></a><a class="link" href="ack.html" title="Acknowledgements">Acknowledgements</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/faq.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/faq.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/faq.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>FAQ</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../map.html" title="Roadmap">
 <link rel="prev" href="todo.html" title="TODO">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="todo.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ack.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_map_faq">
+<div class="section boost_multiprecision_map_faq">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.map.faq"></a><a class="link" href="faq.html" title="FAQ">FAQ</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>History</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../map.html" title="Roadmap">
 <link rel="prev" href="../map.html" title="Roadmap">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../map.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_map_hist">
+<div class="section boost_multiprecision_map_hist">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.map.hist"></a><a class="link" href="hist.html" title="History">History</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/todo.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/todo.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/todo.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>TODO</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../map.html" title="Roadmap">
 <link rel="prev" href="hist.html" title="History">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="hist.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="faq.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_map_todo">
+<div class="section boost_multiprecision_map_todo">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.map.todo"></a><a class="link" href="todo.html" title="TODO">TODO</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Performance Comparison</title>
 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="prev" href="ref/headers.html" title="Header File Structure">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="ref/headers.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="perf/overhead.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_perf">
+<div class="section boost_multiprecision_perf">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_multiprecision.perf"></a><a class="link" href="perf.html" title="Performance Comparison">Performance Comparison</a>
 </h2></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section"><a href="perf/overhead.html">The Overhead in the
       Number Class Wrapper</a></span></dt>
 <dt><span class="section"><a href="perf/realworld.html">Floating Point Real

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Float Algorithm Performance</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../perf.html" title="Performance Comparison">
 <link rel="prev" href="int_real_world.html" title="Integer Real World Tests">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="int_real_world.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="integer_performance.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_perf_float_performance">
+<div class="section boost_multiprecision_perf_float_performance">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.perf.float_performance"></a><a class="link" href="float_performance.html" title="Float Algorithm Performance">Float Algorithm
       Performance</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Integer Real World Tests</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../perf.html" title="Performance Comparison">
 <link rel="prev" href="realworld.html" title="Floating Point Real World Tests">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="realworld.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="float_performance.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_perf_int_real_world">
+<div class="section boost_multiprecision_perf_int_real_world">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.perf.int_real_world"></a><a class="link" href="int_real_world.html" title="Integer Real World Tests">Integer Real
       World Tests</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Integer Algorithm Performance</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../perf.html" title="Performance Comparison">
 <link rel="prev" href="float_performance.html" title="Float Algorithm Performance">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="float_performance.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rational_performance.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_perf_integer_performance">
+<div class="section boost_multiprecision_perf_integer_performance">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.perf.integer_performance"></a><a class="link" href="integer_performance.html" title="Integer Algorithm Performance">Integer
       Algorithm Performance</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/overhead.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/overhead.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/overhead.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>The Overhead in the Number Class Wrapper</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../perf.html" title="Performance Comparison">
 <link rel="prev" href="../perf.html" title="Performance Comparison">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../perf.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="realworld.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_perf_overhead">
+<div class="section boost_multiprecision_perf_overhead">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.perf.overhead"></a><a class="link" href="overhead.html" title="The Overhead in the Number Class Wrapper">The Overhead in the
       Number Class Wrapper</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Rational Type Performance</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../perf.html" title="Performance Comparison">
 <link rel="prev" href="integer_performance.html" title="Integer Algorithm Performance">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="integer_performance.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../map.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_perf_rational_performance">
+<div class="section boost_multiprecision_perf_rational_performance">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.perf.rational_performance"></a><a class="link" href="rational_performance.html" title="Rational Type Performance">Rational
       Type Performance</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Floating Point Real World Tests</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../perf.html" title="Performance Comparison">
 <link rel="prev" href="overhead.html" title="The Overhead in the Number Class Wrapper">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="overhead.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="int_real_world.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_perf_realworld">
+<div class="section boost_multiprecision_perf_realworld">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.perf.realworld"></a><a class="link" href="realworld.html" title="Floating Point Real World Tests">Floating Point Real
       World Tests</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Reference</title>
 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="prev" href="tut/mixed.html" title="Mixed Precision Arithmetic">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="tut/mixed.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ref/number.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref">
+<div class="section boost_multiprecision_ref">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_multiprecision.ref"></a><a class="link" href="ref.html" title="Reference">Reference</a>
 </h2></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section">number</span></dt>
 <dt><span class="section">cpp_int</span></dt>
 <dt><span class="section">gmp_int</span></dt>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Backend Requirements</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="internals.html" title="Internal Support Code">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="internals.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="headers.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_backendconc">
+<div class="section boost_multiprecision_ref_backendconc">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.backendconc"></a><a class="link" href="backendconc.html" title="Backend Requirements">Backend Requirements</a>
 </h3></div></div></div>
@@ -319,7 +319,7 @@
               </td>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">noexcept</span></code>
+ <code class="computeroutput"><span class="keyword">noexcept</span></code>
                 </p>
               </td>
 </tr>
@@ -396,7 +396,7 @@
               </td>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">noexcept</span></code>
+ <code class="computeroutput"><span class="keyword">noexcept</span></code>
                 </p>
               </td>
 </tr>
@@ -1013,7 +1013,7 @@
               </td>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">noexcept</span></code>
+ <code class="computeroutput"><span class="keyword">noexcept</span></code>
                 </p>
               </td>
 </tr>
@@ -1039,7 +1039,7 @@
               </td>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">noexcept</span></code>
+ <code class="computeroutput"><span class="keyword">noexcept</span></code>
                 </p>
               </td>
 </tr>
@@ -1200,7 +1200,7 @@
               </td>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">noexcept</span></code>
+ <code class="computeroutput"><span class="keyword">noexcept</span></code>
                 </p>
               </td>
 </tr>
@@ -1279,7 +1279,7 @@
               </td>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">noexcept</span></code>
+ <code class="computeroutput"><span class="keyword">noexcept</span></code>
                 </p>
               </td>
 </tr>
@@ -1356,7 +1356,7 @@
               </td>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">noexcept</span></code>
+ <code class="computeroutput"><span class="keyword">noexcept</span></code>
                 </p>
               </td>
 </tr>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>cpp_dec_float</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="mpfr_ref.html" title="mpfr_float_backend">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="mpfr_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="internals.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_cpp_dec_ref">
+<div class="section boost_multiprecision_ref_cpp_dec_ref">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.cpp_dec_ref"></a><a class="link" href="cpp_dec_ref.html" title="cpp_dec_float">cpp_dec_float</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>cpp_int</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="number.html" title="number">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="number.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gmp_int_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_cpp_int_ref">
+<div class="section boost_multiprecision_ref_cpp_int_ref">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.cpp_int_ref"></a><a class="link" href="cpp_int_ref.html" title="cpp_int">cpp_int</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>gmp_int</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="cpp_int_ref.html" title="cpp_int">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="cpp_int_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tom_int_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_gmp_int_ref">
+<div class="section boost_multiprecision_ref_gmp_int_ref">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.gmp_int_ref"></a><a class="link" href="gmp_int_ref.html" title="gmp_int">gmp_int</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Header File Structure</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="backendconc.html" title="Backend Requirements">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="backendconc.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../perf.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_headers">
+<div class="section boost_multiprecision_ref_headers">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.headers"></a><a class="link" href="headers.html" title="Header File Structure">Header File Structure</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/internals.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/internals.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/internals.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Internal Support Code</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="cpp_dec_ref.html" title="cpp_dec_float">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="cpp_dec_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="backendconc.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_internals">
+<div class="section boost_multiprecision_ref_internals">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.internals"></a><a class="link" href="internals.html" title="Internal Support Code">Internal Support
       Code</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>gmp_float</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="tom_int_ref.html" title="tom_int">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="tom_int_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="mpfr_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_mpf_ref">
+<div class="section boost_multiprecision_ref_mpf_ref">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.mpf_ref"></a><a class="link" href="mpf_ref.html" title="gmp_float">gmp_float</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>mpfr_float_backend</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="mpf_ref.html" title="gmp_float">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="mpf_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_dec_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_mpfr_ref">
+<div class="section boost_multiprecision_ref_mpfr_ref">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.mpfr_ref"></a><a class="link" href="mpfr_ref.html" title="mpfr_float_backend">mpfr_float_backend</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>number</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="../ref.html" title="Reference">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_int_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_number">
+<div class="section boost_multiprecision_ref_number">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.number"></a><a class="link" href="number.html" title="number">number</a>
 </h3></div></div></div>
@@ -947,7 +947,7 @@
               </td>
 <td>
                 <p>
- 1045eps[1]</sup></a>
+ 1045eps[1]
                 </p>
               </td>
 <td>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>tom_int</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ref.html" title="Reference">
 <link rel="prev" href="gmp_int_ref.html" title="gmp_int">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="gmp_int_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="mpf_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_ref_tom_int_ref">
+<div class="section boost_multiprecision_ref_tom_int_ref">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.ref.tom_int_ref"></a><a class="link" href="tom_int_ref.html" title="tom_int">tom_int</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Tutorial</title>
 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="prev" href="intro.html" title="Introduction">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="intro.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tut/ints.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut">
+<div class="section boost_multiprecision_tut">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_multiprecision.tut"></a><a class="link" href="tut.html" title="Tutorial">Tutorial</a>
 </h2></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section">Integer Types</span></dt>
 <dd><dl>
 <dt><span class="section">cpp_int</span></dt>
@@ -43,6 +43,7 @@
 <dt><span class="section">cpp_dec_float</span></dt>
 <dt><span class="section">gmp_float</span></dt>
 <dt><span class="section">mpfr_float</span></dt>
+<dt><span class="section">float128</span></dt>
 <dt><span class="section">Examples</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="tut/floats/fp_eg/aos.html">Area of
@@ -78,7 +79,7 @@
       Interconverting Between Number Types</a></span></dt>
 <dt><span class="section">Generating Random Numbers</span></dt>
 <dt><span class="section">Primality Testing</span></dt>
-<dt><span class="section">Literal Types and constexpr Support</span></dt>
+<dt><span class="section">Literal Types and constexpr Support</span></dt>
 <dt><span class="section"><a href="tut/rounding.html">Rounding Rules for
       Conversions</a></span></dt>
 <dt><span class="section">Mixed Precision Arithmetic</span></dt>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Constructing and Interconverting Between Number Types</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="misc/visualizers.html" title="Visual C++ Debugger Visualizers">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="misc/visualizers.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="random.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_conversions">
+<div class="section boost_multiprecision_tut_conversions">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.conversions"></a><a class="link" href="conversions.html" title="Constructing and Interconverting Between Number Types">Constructing and
       Interconverting Between Number Types</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Floating Point Numbers</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="ints/egs/bitops.html" title="Bit Operations">
@@ -22,14 +22,15 @@
 <div class="spirit-nav">
 <a accesskey="p" href="ints/egs/bitops.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="floats/cpp_dec_float.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats">
+<div class="section boost_multiprecision_tut_floats">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.floats"></a><a class="link" href="floats.html" title="Floating Point Numbers">Floating Point Numbers</a>
 </h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section">cpp_dec_float</span></dt>
 <dt><span class="section">gmp_float</span></dt>
 <dt><span class="section">mpfr_float</span></dt>
+<dt><span class="section">float128</span></dt>
 <dt><span class="section">Examples</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="floats/fp_eg/aos.html">Area of
@@ -189,6 +190,40 @@
                 </p>
               </td>
 </tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">float128</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost/multiprecision/float128.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ Either libquadmath
+ or the Intel C++ Math library.
+ </p>
+ </td>
+<td>
+ <p>
+ Very fast and efficient back-end for 128-bit floating point values
+ (113-bit mantissa, equivalent to FORTRAN's QUAD real)
+ </p>
+ </td>
+<td>
+ <p>
+ Depends on the compiler being either recent GCC or Intel C++ versions.
+ </p>
+ </td>
+</tr>
 </tbody>
 </table></div>
 </div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>cpp_dec_float</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../floats.html" title="Floating Point Numbers">
 <link rel="prev" href="../floats.html" title="Floating Point Numbers">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../floats.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gmp_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats_cpp_dec_float">
+<div class="section boost_multiprecision_tut_floats_cpp_dec_float">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.floats.cpp_dec_float"></a><a class="link" href="cpp_dec_float.html" title="cpp_dec_float">cpp_dec_float</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,10 +3,10 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Examples</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../floats.html" title="Floating Point Numbers">
-<link rel="prev" href="mpfr_float.html" title="mpfr_float">
+<link rel="prev" href="float128.html" title="float128">
 <link rel="next" href="fp_eg/aos.html" title="Area of Circle">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,13 +20,13 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="mpfr_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fp_eg/aos.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="float128.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fp_eg/aos.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats_fp_eg">
+<div class="section boost_multiprecision_tut_floats_fp_eg">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.floats.fp_eg"></a><a class="link" href="fp_eg.html" title="Examples">Examples</a>
 </h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section"><a href="fp_eg/aos.html">Area of
           Circle</a></span></dt>
 <dt><span class="section"><a href="fp_eg/jel.html">Defining
@@ -49,7 +49,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="mpfr_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fp_eg/aos.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="float128.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fp_eg/aos.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Area of Circle</title>
 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../fp_eg.html" title="Examples">
 <link rel="prev" href="../fp_eg.html" title="Examples">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../fp_eg.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_eg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="jel.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats_fp_eg_aos">
+<div class="section boost_multiprecision_tut_floats_fp_eg_aos">
 <div class="titlepage"><div><div><h5 class="title">
 <a name="boost_multiprecision.tut.floats.fp_eg.aos"></a><a class="link" href="aos.html" title="Area of Circle">Area of
           Circle</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Calculating an Integral</title>
 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../fp_eg.html" title="Examples">
 <link rel="prev" href="nd.html" title="Calculating a Derivative">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="nd.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_eg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="poly_eg.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats_fp_eg_gi">
+<div class="section boost_multiprecision_tut_floats_fp_eg_gi">
 <div class="titlepage"><div><div><h5 class="title">
 <a name="boost_multiprecision.tut.floats.fp_eg.gi"></a><a class="link" href="gi.html" title="Calculating an Integral">Calculating
           an Integral</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Defining a Special Function.</title>
 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../fp_eg.html" title="Examples">
 <link rel="prev" href="aos.html" title="Area of Circle">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="aos.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_eg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nd.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats_fp_eg_jel">
+<div class="section boost_multiprecision_tut_floats_fp_eg_jel">
 <div class="titlepage"><div><div><h5 class="title">
 <a name="boost_multiprecision.tut.floats.fp_eg.jel"></a><a class="link" href="jel.html" title="Defining a Special Function.">Defining
           a Special Function.</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Calculating a Derivative</title>
 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../fp_eg.html" title="Examples">
 <link rel="prev" href="jel.html" title="Defining a Special Function.">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="jel.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_eg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gi.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats_fp_eg_nd">
+<div class="section boost_multiprecision_tut_floats_fp_eg_nd">
 <div class="titlepage"><div><div><h5 class="title">
 <a name="boost_multiprecision.tut.floats.fp_eg.nd"></a><a class="link" href="nd.html" title="Calculating a Derivative">Calculating
           a Derivative</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Polynomial Evaluation</title>
 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../fp_eg.html" title="Examples">
 <link rel="prev" href="gi.html" title="Calculating an Integral">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="gi.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_eg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../interval.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats_fp_eg_poly_eg">
+<div class="section boost_multiprecision_tut_floats_fp_eg_poly_eg">
 <div class="titlepage"><div><div><h5 class="title">
 <a name="boost_multiprecision.tut.floats.fp_eg.poly_eg"></a><a class="link" href="poly_eg.html" title="Polynomial Evaluation">Polynomial
           Evaluation</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/gmp_float.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/gmp_float.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/gmp_float.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>gmp_float</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../floats.html" title="Floating Point Numbers">
 <link rel="prev" href="cpp_dec_float.html" title="cpp_dec_float">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="cpp_dec_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="mpfr_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats_gmp_float">
+<div class="section boost_multiprecision_tut_floats_gmp_float">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.floats.gmp_float"></a><a class="link" href="gmp_float.html" title="gmp_float">gmp_float</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,11 +3,11 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>mpfr_float</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../floats.html" title="Floating Point Numbers">
 <link rel="prev" href="gmp_float.html" title="gmp_float">
-<link rel="next" href="fp_eg.html" title="Examples">
+<link rel="next" href="float128.html" title="float128">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,9 +20,9 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="gmp_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fp_eg.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="gmp_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="float128.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_floats_mpfr_float">
+<div class="section boost_multiprecision_tut_floats_mpfr_float">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.floats.mpfr_float"></a><a class="link" href="mpfr_float.html" title="mpfr_float">mpfr_float</a>
 </h4></div></div></div>
@@ -80,7 +80,7 @@
           digit counts. Note that we can not guarantee that using <code class="computeroutput"><span class="identifier">allocate_stack</span></code>
           won't cause any calls to mpfr's allocation routines, as mpfr may call these
           inside it's own code. The following table gives an idea of the performance
- tradeoff's at 50 decimal digits precision[2]</sup></a>:
+ tradeoff's at 50 decimal digits precision[2]:
         </p>
 <div class="informaltable"><table class="table">
 <colgroup>
@@ -259,7 +259,7 @@
 <p>
         </p>
 <div class="footnotes">
-<br><hr style="width:100; align:left;">
+<br><hr style="width:100; text-align:left;margin-left: 0">
 <div id="ftn.boost_multiprecision.tut.floats.mpfr_float.f0" class="footnote"><p>[2]
             Compiled with VC++10 and /Ox, with MPFR-3.0.0 and MPIR-2.3.0
           </p></div>
@@ -275,7 +275,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="gmp_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fp_eg.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="gmp_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="float128.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Interval Number Types</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="floats/fp_eg/poly_eg.html" title="Polynomial Evaluation">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="floats/fp_eg/poly_eg.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="interval/mpfi.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_interval">
+<div class="section boost_multiprecision_tut_interval">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.interval"></a><a class="link" href="interval.html" title="Interval Number Types">Interval Number Types</a>
 </h3></div></div></div>
-<div class="toc"><dl><dt><span class="section">mpfi_float</span></dt></dl></div>
+<div class="toc"><dl class="toc"><dt><span class="section">mpfi_float</span></dt></dl></div>
 <p>
         There is one currently only one interval number type supported - MPFI.
       </p>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/mpfi.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/mpfi.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/mpfi.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>mpfi_float</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../interval.html" title="Interval Number Types">
 <link rel="prev" href="../interval.html" title="Interval Number Types">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../interval.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../interval.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../rational.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_interval_mpfi">
+<div class="section boost_multiprecision_tut_interval_mpfi">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.interval.mpfi"></a><a class="link" href="mpfi.html" title="mpfi_float">mpfi_float</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Integer Types</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="../tut.html" title="Tutorial">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../tut.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ints/cpp_int.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_ints">
+<div class="section boost_multiprecision_tut_ints">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.ints"></a><a class="link" href="ints.html" title="Integer Types">Integer Types</a>
 </h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section">cpp_int</span></dt>
 <dt><span class="section">gmp_int</span></dt>
 <dt><span class="section">tom_int</span></dt>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>cpp_int</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ints.html" title="Integer Types">
 <link rel="prev" href="../ints.html" title="Integer Types">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../ints.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ints.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gmp_int.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_ints_cpp_int">
+<div class="section boost_multiprecision_tut_ints_cpp_int">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.ints.cpp_int"></a><a class="link" href="cpp_int.html" title="cpp_int">cpp_int</a>
 </h4></div></div></div>
@@ -330,6 +330,14 @@
               using the platforms native sign representation: this ensures there
               is no step change in behavior as a cpp_int grows in size.
             </li>
+<li class="listitem">
+ Fixed precision <code class="computeroutput"><span class="identifier">cpp_int</span></code>'s
+ have some support for <code class="computeroutput"><span class="keyword">constexpr</span></code>
+ values and user-defined literals, see <a class="link" href="../lits.html" title="Literal Types and constexpr Support">here</a>
+ for the full description. For example <code class="computeroutput"><span class="number">0xfffff</span><span class="identifier">_cppi1024</span></code> specifies a 1024-bit integer
+ with the value 0xffff. This can be used to generate compile time constants
+ that are too large to fit into any built in number type.
+ </li>
 </ul></div>
 <h6>
 <a name="boost_multiprecision.tut.ints.cpp_int.h0"></a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Examples</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ints.html" title="Integer Types">
 <link rel="prev" href="tom_int.html" title="tom_int">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="tom_int.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ints.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="egs/factorials.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_ints_egs">
+<div class="section boost_multiprecision_tut_ints_egs">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.ints.egs"></a><a class="link" href="egs.html" title="Examples">Examples</a>
 </h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section">Factorials</span></dt>
 <dt><span class="section">Bit Operations</span></dt>
 </dl></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/bitops.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/bitops.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/bitops.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Bit Operations</title>
 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../egs.html" title="Examples">
 <link rel="prev" href="factorials.html" title="Factorials">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="factorials.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../egs.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../floats.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_ints_egs_bitops">
+<div class="section boost_multiprecision_tut_ints_egs_bitops">
 <div class="titlepage"><div><div><h5 class="title">
 <a name="boost_multiprecision.tut.ints.egs.bitops"></a><a class="link" href="bitops.html" title="Bit Operations">Bit Operations</a>
 </h5></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Factorials</title>
 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../egs.html" title="Examples">
 <link rel="prev" href="../egs.html" title="Examples">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../egs.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../egs.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bitops.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_ints_egs_factorials">
+<div class="section boost_multiprecision_tut_ints_egs_factorials">
 <div class="titlepage"><div><div><h5 class="title">
 <a name="boost_multiprecision.tut.ints.egs.factorials"></a><a class="link" href="factorials.html" title="Factorials">Factorials</a>
 </h5></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>gmp_int</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ints.html" title="Integer Types">
 <link rel="prev" href="cpp_int.html" title="cpp_int">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="cpp_int.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ints.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tom_int.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_ints_gmp_int">
+<div class="section boost_multiprecision_tut_ints_gmp_int">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.ints.gmp_int"></a><a class="link" href="gmp_int.html" title="gmp_int">gmp_int</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/tom_int.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/tom_int.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/tom_int.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>tom_int</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../ints.html" title="Integer Types">
 <link rel="prev" href="gmp_int.html" title="gmp_int">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="gmp_int.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ints.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="egs.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_ints_tom_int">
+<div class="section boost_multiprecision_tut_ints_tom_int">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.ints.tom_int"></a><a class="link" href="tom_int.html" title="tom_int">tom_int</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Literal Types and constexpr Support</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="primetest.html" title="Primality Testing">
@@ -22,14 +22,25 @@
 <div class="spirit-nav">
 <a accesskey="p" href="primetest.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rounding.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_lits">
+<div class="section boost_multiprecision_tut_lits">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_multiprecision.tut.lits"></a><a class="link" href="lits.html" title="Literal Types and constexpr Support">Literal Types and <code class="computeroutput"><span class="identifier">constexpr</span></code> Support</a>
+<a name="boost_multiprecision.tut.lits"></a><a class="link" href="lits.html" title="Literal Types and constexpr Support">Literal Types and <code class="computeroutput"><span class="keyword">constexpr</span></code> Support</a>
 </h3></div></div></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The features described in this section make heavy use of C++11 language
+ features, currently (as of May 2013) only GCC-4.7 and later, and Clang
+ 3.3 and later have the support required to make these features work.
+ </p></td></tr>
+</table></div>
 <p>
- There is limited support for <code class="computeroutput"><span class="identifier">constexpr</span></code>
- in the library, currently the <code class="computeroutput"><span class="identifier">number</span></code>
- front end supports <code class="computeroutput"><span class="identifier">constexpr</span></code>
+ There is limited support for <code class="computeroutput"><span class="keyword">constexpr</span></code>
+ and user-defined literals in the library, currently the <code class="computeroutput"><span class="identifier">number</span></code>
+ front end supports <code class="computeroutput"><span class="keyword">constexpr</span></code>
         on default construction and all forwarding constructors, but not on any of
         the non-member operators. So if some type <code class="computeroutput"><span class="identifier">B</span></code>
         is a literal type, then <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</span></code>
@@ -49,11 +60,138 @@
       </p>
 <pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
 
-<span class="identifier">constexpr</span> <span class="identifier">int128_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="comment">// OK, fixed precision int128_t has no allocator.</span>
-<span class="identifier">constexpr</span> <span class="identifier">uint1024_t</span> <span class="identifier">j</span> <span class="special">=</span> <span class="number">0</span><span class="identifier">xFFFFFFFF00000000uLL</span><span class="special">;</span> <span class="comment">// OK, fixed precision uint1024_t has no allocator.</span>
+<span class="keyword">constexpr</span> <span class="identifier">int128_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="comment">// OK, fixed precision int128_t has no allocator.</span>
+<span class="keyword">constexpr</span> <span class="identifier">uint1024_t</span> <span class="identifier">j</span> <span class="special">=</span> <span class="number">0</span><span class="identifier">xFFFFFFFF00000000uLL</span><span class="special">;</span> <span class="comment">// OK, fixed precision uint1024_t has no allocator.</span>
 
-<span class="identifier">constexpr</span> <span class="identifier">checked_uint128_t</span> <span class="identifier">k</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span> <span class="comment">// Error, checked type is not a literal type as we need runtime error checking.</span>
-<span class="identifier">constexpr</span> <span class="identifier">cpp_int</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span> <span class="comment">// Error, type is not a literal as it performs memory management.</span>
+<span class="keyword">constexpr</span> <span class="identifier">checked_uint128_t</span> <span class="identifier">k</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span> <span class="comment">// Error, checked type is not a literal type as we need runtime error checking.</span>
+<span class="keyword">constexpr</span> <span class="identifier">cpp_int</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span> <span class="comment">// Error, type is not a literal as it performs memory management.</span>
+</pre>
+<p>
+ There is also limited support for user defined-literals - these are limited
+ to unchecked, fixed precision <code class="computeroutput"><span class="identifier">cpp_int</span></code>'s
+ which are specified in hexadecimal notation. The suffixes supported are:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Suffix
+ </p>
+ </th>
+<th>
+ <p>
+ Meaning
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ _cppi
+ </p>
+ </td>
+<td>
+ <p>
+ Specifies a value of type: <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_int_backend</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">signed_magnitude</span><span class="special">,</span><span class="identifier">unchecked</span><span class="special">,</span><span class="keyword">void</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>,
+ where N is chosen to contain just enough digits to hold the number
+ specified.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ _cppui
+ </p>
+ </td>
+<td>
+ <p>
+ Specifies a value of type: <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_int_backend</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">unsigned_magnitude</span><span class="special">,</span><span class="identifier">unchecked</span><span class="special">,</span><span class="keyword">void</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>,
+ where N is chosen to contain just enough digits to hold the number
+ specified.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ _cppi<span class="emphasis"><em>N</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Specifies a value of type <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_int_backend</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">signed_magnitude</span><span class="special">,</span><span class="identifier">unchecked</span><span class="special">,</span><span class="keyword">void</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ _cppui<span class="emphasis"><em>N</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Specifies a value of type <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_int_backend</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">signed_magnitude</span><span class="special">,</span><span class="identifier">unchecked</span><span class="special">,</span><span class="keyword">void</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ In each case, use of these suffixes with hexadecimal values produces a <code class="computeroutput"><span class="keyword">constexpr</span></code> result.
+ </p>
+<p>
+ Examples:
+ </p>
+<pre class="programlisting"><span class="comment">//</span>
+<span class="comment">// Any use of user defined literals requires that we import the literal-operators</span>
+<span class="comment">// into current scope first:</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">literals</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// To keep things simple in the example, we'll make our types used visible to this scope as well:</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// The value zero as a number&lt;cpp_int_backend&lt;4,4,signed_magnitude,unchecked,void&gt; &gt;:</span>
+<span class="keyword">constexpr</span> <span class="keyword">auto</span> <span class="identifier">a</span> <span class="special">=</span> <span class="number">0x0</span><span class="identifier">_cppi</span><span class="special">;</span>
+<span class="comment">// The type of each constant has 4 bits per hexadecimal digit,</span>
+<span class="comment">// so this is of type uint256_t (ie number&lt;cpp_int_backend&lt;256,256,unsigned_magnitude,unchecked,void&gt; &gt;):</span>
+<span class="keyword">constexpr</span> <span class="keyword">auto</span> <span class="identifier">b</span> <span class="special">=</span> <span class="number">0</span><span class="identifier">xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_cppui</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// Smaller values can be assigned to larger values:</span>
+<span class="identifier">int256_t</span> <span class="identifier">c</span> <span class="special">=</span> <span class="number">0x1234</span><span class="identifier">_cppi</span><span class="special">;</span> <span class="comment">// OK</span>
+<span class="comment">//</span>
+<span class="comment">// However, this does not currently work in constexpr contexts:</span>
+<span class="keyword">constexpr</span> <span class="identifier">int256_t</span> <span class="identifier">d</span> <span class="special">=</span> <span class="number">0x1</span><span class="identifier">_cppi</span><span class="special">;</span> <span class="comment">// Compiler error</span>
+<span class="comment">//</span>
+<span class="comment">// Constants can be padded out with leading zeros to generate wider types:</span>
+<span class="keyword">constexpr</span> <span class="identifier">uint256_t</span> <span class="identifier">e</span> <span class="special">=</span> <span class="number">0</span><span class="identifier">x0000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFF_cppui</span><span class="special">;</span> <span class="comment">// OK</span>
+<span class="comment">//</span>
+<span class="comment">// However, specific width types are best produced with specific-width suffixes,</span>
+<span class="comment">// ones supported by default are `_cpp[u]i128`, `_cpp[u]i256`, `_cpp[u]i512`, `_cpp[u]i1024`.</span>
+<span class="comment">//</span>
+<span class="keyword">constexpr</span> <span class="identifier">int128_t</span> <span class="identifier">f</span> <span class="special">=</span> <span class="number">0x1234</span><span class="identifier">_cppi128</span><span class="special">;</span> <span class="comment">// OK, always produces an int128_t as the result.</span>
+<span class="keyword">constexpr</span> <span class="identifier">uint1024_t</span> <span class="identifier">g</span> <span class="special">=</span> <span class="number">0</span><span class="identifier">xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccc_cppui1024</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// If other specific width types are required, then there is a macro for generating the operators</span>
+<span class="comment">// for these. The macro can be used at namespace scope only:</span>
+<span class="comment">//</span>
+<span class="identifier">BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL</span><span class="special">(</span><span class="number">2048</span><span class="special">);</span>
+<span class="comment">//</span>
+<span class="comment">// Now we can create 2048-bit literals as well:</span>
+<span class="keyword">constexpr</span> <span class="keyword">auto</span> <span class="identifier">h</span> <span class="special">=</span> <span class="number">0xff</span><span class="identifier">_cppi2048</span><span class="special">;</span> <span class="comment">// h is of type number&lt;cpp_int_backend&lt;2048,2048,signed_magnitude,unchecked,void&gt; &gt;</span>
+<span class="comment">//</span>
+<span class="comment">// Finally negative values are handled via the unary minus operator:</span>
+<span class="comment">//</span>
+<span class="keyword">constexpr</span> <span class="identifier">int1024_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="special">-</span><span class="number">0</span><span class="identifier">xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_cppui1024</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// Which means this also works:</span>
+<span class="keyword">constexpr</span> <span class="identifier">int1024_t</span> <span class="identifier">j</span> <span class="special">=</span> <span class="special">-</span><span class="identifier">g</span><span class="special">;</span> <span class="comment">// OK: unary minus operator is constexpr.</span>
 </pre>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Miscellaneous Number Types.</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="rational/rational_adaptor.html" title="rational_adaptor">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="rational/rational_adaptor.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="misc/logged_adaptor.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_misc">
+<div class="section boost_multiprecision_tut_misc">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.misc"></a><a class="link" href="misc.html" title="Miscellaneous Number Types.">Miscellaneous Number Types.</a>
 </h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section">logged_adaptor</span></dt>
 <dt><span class="section">debug_adaptor</span></dt>
 <dt><span class="section"><a href="misc/visualizers.html">Visual C++

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/debug_adaptor.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/debug_adaptor.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/debug_adaptor.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>debug_adaptor</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../misc.html" title="Miscellaneous Number Types.">
 <link rel="prev" href="logged_adaptor.html" title="logged_adaptor">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="logged_adaptor.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../misc.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="visualizers.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_misc_debug_adaptor">
+<div class="section boost_multiprecision_tut_misc_debug_adaptor">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.misc.debug_adaptor"></a><a class="link" href="debug_adaptor.html" title="debug_adaptor">debug_adaptor</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/logged_adaptor.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/logged_adaptor.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/logged_adaptor.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>logged_adaptor</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../misc.html" title="Miscellaneous Number Types.">
 <link rel="prev" href="../misc.html" title="Miscellaneous Number Types.">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../misc.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../misc.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="debug_adaptor.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_misc_logged_adaptor">
+<div class="section boost_multiprecision_tut_misc_logged_adaptor">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.misc.logged_adaptor"></a><a class="link" href="logged_adaptor.html" title="logged_adaptor">logged_adaptor</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/visualizers.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/visualizers.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/visualizers.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Visual C++ Debugger Visualizers</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../misc.html" title="Miscellaneous Number Types.">
 <link rel="prev" href="debug_adaptor.html" title="debug_adaptor">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="debug_adaptor.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../misc.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../conversions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_misc_visualizers">
+<div class="section boost_multiprecision_tut_misc_visualizers">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.misc.visualizers"></a><a class="link" href="visualizers.html" title="Visual C++ Debugger Visualizers">Visual C++
         Debugger Visualizers</a>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/mixed.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/mixed.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/mixed.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Mixed Precision Arithmetic</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="rounding.html" title="Rounding Rules for Conversions">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="rounding.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_mixed">
+<div class="section boost_multiprecision_tut_mixed">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.mixed"></a><a class="link" href="mixed.html" title="Mixed Precision Arithmetic">Mixed Precision Arithmetic</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/primetest.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/primetest.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/primetest.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Primality Testing</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="random.html" title="Generating Random Numbers">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="random.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="lits.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_primetest">
+<div class="section boost_multiprecision_tut_primetest">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.primetest"></a><a class="link" href="primetest.html" title="Primality Testing">Primality Testing</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Generating Random Numbers</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="conversions.html" title="Constructing and Interconverting Between Number Types">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="conversions.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="primetest.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_random">
+<div class="section boost_multiprecision_tut_random">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.random"></a><a class="link" href="random.html" title="Generating Random Numbers">Generating Random Numbers</a>
 </h3></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Rational Number Types</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="interval/mpfi.html" title="mpfi_float">
@@ -22,11 +22,11 @@
 <div class="spirit-nav">
 <a accesskey="p" href="interval/mpfi.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rational/cpp_rational.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_rational">
+<div class="section boost_multiprecision_tut_rational">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.rational"></a><a class="link" href="rational.html" title="Rational Number Types">Rational Number Types</a>
 </h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
 <dt><span class="section">cpp_rational</span></dt>
 <dt><span class="section">gmp_rational</span></dt>
 <dt><span class="section">tommath_rational</span></dt>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/br.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/br.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/br.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Use With Boost.Rational</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../rational.html" title="Rational Number Types">
 <link rel="prev" href="tommath_rational.html" title="tommath_rational">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="tommath_rational.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rational.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rational_adaptor.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_rational_br">
+<div class="section boost_multiprecision_tut_rational_br">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.rational.br"></a><a class="link" href="br.html" title="Use With Boost.Rational">Use With Boost.Rational</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/cpp_rational.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/cpp_rational.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/cpp_rational.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>cpp_rational</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../rational.html" title="Rational Number Types">
 <link rel="prev" href="../rational.html" title="Rational Number Types">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../rational.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rational.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gmp_rational.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_rational_cpp_rational">
+<div class="section boost_multiprecision_tut_rational_cpp_rational">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.rational.cpp_rational"></a><a class="link" href="cpp_rational.html" title="cpp_rational">cpp_rational</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/gmp_rational.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/gmp_rational.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/gmp_rational.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>gmp_rational</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../rational.html" title="Rational Number Types">
 <link rel="prev" href="cpp_rational.html" title="cpp_rational">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="cpp_rational.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rational.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tommath_rational.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_rational_gmp_rational">
+<div class="section boost_multiprecision_tut_rational_gmp_rational">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.rational.gmp_rational"></a><a class="link" href="gmp_rational.html" title="gmp_rational">gmp_rational</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adaptor.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adaptor.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adaptor.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>rational_adaptor</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../rational.html" title="Rational Number Types">
 <link rel="prev" href="br.html" title="Use With Boost.Rational">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="br.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rational.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../misc.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_rational_rational_adaptor">
+<div class="section boost_multiprecision_tut_rational_rational_adaptor">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.rational.rational_adaptor"></a><a class="link" href="rational_adaptor.html" title="rational_adaptor">rational_adaptor</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/tommath_rational.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/tommath_rational.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/tommath_rational.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>tommath_rational</title>
 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../rational.html" title="Rational Number Types">
 <link rel="prev" href="gmp_rational.html" title="gmp_rational">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="gmp_rational.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rational.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="br.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_rational_tommath_rational">
+<div class="section boost_multiprecision_tut_rational_tommath_rational">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_multiprecision.tut.rational.tommath_rational"></a><a class="link" href="tommath_rational.html" title="tommath_rational">tommath_rational</a>
 </h4></div></div></div>

Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rounding.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rounding.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rounding.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Rounding Rules for Conversions</title>
 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../tut.html" title="Tutorial">
 <link rel="prev" href="lits.html" title="Literal Types and constexpr Support">
@@ -22,7 +22,7 @@
 <div class="spirit-nav">
 <a accesskey="p" href="lits.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="mixed.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section boost_multiprecision_tut_rounding">
+<div class="section boost_multiprecision_tut_rounding">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_multiprecision.tut.rounding"></a><a class="link" href="rounding.html" title="Rounding Rules for Conversions">Rounding Rules for
       Conversions</a>

Modified: branches/release/libs/multiprecision/doc/html/index.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/index.html (original)
+++ branches/release/libs/multiprecision/doc/html/index.html 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Chapter&#160;1.&#160;Boost.Multiprecision</title>
 <link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="next" href="boost_multiprecision/intro.html" title="Introduction">
 </head>
@@ -38,7 +38,7 @@
 </div></div>
 <div class="toc">
 <p><b>Table of Contents</b></p>
-<dl>
+<dl class="toc">
 <dt><span class="section">Introduction</span></dt>
 <dt><span class="section">Tutorial</span></dt>
 <dd><dl>
@@ -58,6 +58,7 @@
 <dt><span class="section">cpp_dec_float</span></dt>
 <dt><span class="section">gmp_float</span></dt>
 <dt><span class="section">mpfr_float</span></dt>
+<dt><span class="section">float128</span></dt>
 <dt><span class="section">Examples</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="boost_multiprecision/tut/floats/fp_eg/aos.html">Area of
@@ -93,7 +94,7 @@
       Interconverting Between Number Types</a></span></dt>
 <dt><span class="section">Generating Random Numbers</span></dt>
 <dt><span class="section">Primality Testing</span></dt>
-<dt><span class="section">Literal Types and constexpr Support</span></dt>
+<dt><span class="section">Literal Types and constexpr Support</span></dt>
 <dt><span class="section"><a href="boost_multiprecision/tut/rounding.html">Rounding Rules for
       Conversions</a></span></dt>
 <dt><span class="section">Mixed Precision Arithmetic</span></dt>
@@ -145,7 +146,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 31, 2013 at 16:21:20 GMT</small></p></td>
+<td align="left"><p><small>Last revised: May 11, 2013 at 16:08:54 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/release/libs/multiprecision/doc/multiprecision.qbk
==============================================================================
--- branches/release/libs/multiprecision/doc/multiprecision.qbk (original)
+++ branches/release/libs/multiprecision/doc/multiprecision.qbk 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -22,6 +22,7 @@
 [import ../example/gmp_snips.cpp]
 [import ../example/mpfr_snips.cpp]
 [import ../example/mpfi_snips.cpp]
+[import ../example/float128_snips.cpp]
 [import ../example/cpp_dec_float_snips.cpp]
 [import ../example/tommath_snips.cpp]
 [import ../example/cpp_int_snips.cpp]
@@ -38,6 +39,7 @@
 [template mpreal[] [@http://www.holoborodko.com/pavel/mpfr/ mpreal]]
 [template mpir[] [@http://mpir.org/ MPIR]]
 [template tommath[] [@http://libtom.org/?page=features&newsitems=5&whatfile=ltm libtommath]]
+[template quadmath[] [@http://gcc.gnu.org/onlinedocs/libquadmath/ libquadmath]]
 
 [template super[x]'''<superscript>'''[x]'''</superscript>''']
 [template sub[x]'''<subscript>'''[x]'''</subscript>''']
@@ -523,7 +525,10 @@
 integer. Note that it will still be slightly slower than a bare native integer, as it emulates a
 signed-magnitude representation rather than simply using the platforms native sign representation: this ensures
 there is no step change in behavior as a cpp_int grows in size.
-
+* Fixed precision `cpp_int`'s have some support for `constexpr` values and user-defined literals, see
+[link boost_multiprecision.tut.lits here] for the full description. For example `0xfffff_cppi1024`
+specifies a 1024-bit integer with the value 0xffff. This can be used to generate compile time constants that are
+too large to fit into any built in number type.
 
 [h5 Example:]
 
@@ -634,6 +639,7 @@
 [[`cpp_dec_float<N>`][boost/multiprecision/cpp_dec_float.hpp][10][None][Header only, all C++ implementation. Boost licence.][Approximately 2x slower than the [mpfr] or [gmp] libraries.]]
 [[`mpf_float<N>`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]]
 [[`mpfr_float<N>`][boost/multiprecision/mpfr.hpp][2][[gmp] and [mpfr]][Very fast and efficient back-end, with its own standard library implementation.][Dependency on GNU licensed [gmp] and [mpfr] libraries.]]
+[[`float128`][boost/multiprecision/float128.hpp][2][Either [quadmath] or the Intel C++ Math library.][Very fast and efficient back-end for 128-bit floating point values (113-bit mantissa, equivalent to FORTRAN's QUAD real)][Depends on the compiler being either recent GCC or Intel C++ versions.]]
 ]
 
 [section:cpp_dec_float cpp_dec_float]
@@ -842,6 +848,50 @@
 
 [endsect]
 
+[section:float128 float128]
+
+`#include <boost/multiprecision/float128.hpp>`
+
+ namespace boost{ namespace multiprecision{
+
+ class float128_backend;
+
+ typedef number<float128_backend, et_off> float128;
+
+ }} // namespaces
+
+The `float128` number type is a very thin wrapper around GCC's `__float128` or Intel's `_Quad` data types
+and provides an real-number type that is a drop-in replacement for the native C++ floating-point types, but with
+a 113 bit mantissa, and compatible with FORTRAN's 128-bit QUAD real.
+
+All the usual standard library and `numeric_limits` support are available, performance should be equivalent
+to the underlying native types: for example the LINPACK benchmarks for GCC's `__float128` and
+`boost::multiprecision::float128` both achieved 5.6 MFLOPS[footnote On 64-bit Ubuntu 11.10, GCC-4.8.0, Intel Core 2 Duo T5800.].
+
+As well as the usual conversions from arithmetic and string types, instances of `float128` are
+copy constructible and assignable from GCC's `__float128` and Intel's `_Quad` data types.
+
+It's also possible to access the underlying `__float128` or `_Quad` type via the `data()` member
+function of `float128_backend`.
+
+Things you should know when using this type:
+
+* Default constructed `float128`s have the value zero.
+* This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware.
+* It is not possible to round-trip objects of this type to and from a string and get back
+exactly the same value when compiled with Intel's C++ compiler: this is a current limitation of our code. Round tripping
+when using GCC is possible.
+* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted
+as a valid floating point number.
+* Division by zero results in an infinity being produced.
+* Type `float128` can be used as a literal type (constexpr support).
+
+[h5 float128 example:]
+
+[float128_eg]
+
+[endsect]
+
 [section:fp_eg Examples]
 
 [import ../example/floating_point_examples.cpp]
@@ -1508,7 +1558,12 @@
 
 [section:lits Literal Types and `constexpr` Support]
 
-There is limited support for `constexpr` in the library, currently the `number` front end supports `constexpr`
+[note The features described in this section make heavy use of C++11 language features, currently
+(as of May 2013) only
+GCC-4.7 and later, and Clang 3.3 and later have the support required to make these features work.]
+
+There is limited support for `constexpr` and user-defined literals in the library, currently the
+`number` front end supports `constexpr`
 on default construction and all forwarding constructors, but not on any of the non-member operators. So if
 some type `B` is a literal type, then `number<B>` is also a literal type, and you will be able to
 compile-time-construct such a type from any literal that `B` is compile-time-constructible from.
@@ -1528,6 +1583,67 @@
    constexpr checked_uint128_t k = -1; // Error, checked type is not a literal type as we need runtime error checking.
    constexpr cpp_int l = 2; // Error, type is not a literal as it performs memory management.
 
+There is also limited support for user defined-literals - these are limited to unchecked, fixed precision `cpp_int`'s
+which are specified in hexadecimal notation. The suffixes supported are:
+
+[table
+[[Suffix][Meaning]]
+[[_cppi][Specifies a value of type: `number<cpp_int_backend<N,N,signed_magnitude,unchecked,void> >`, where N is chosen
+to contain just enough digits to hold the number specified.]]
+[[_cppui][Specifies a value of type: `number<cpp_int_backend<N,N,unsigned_magnitude,unchecked,void> >`, where N is chosen
+to contain just enough digits to hold the number specified.]]
+[[_cppi['N]][Specifies a value of type `number<cpp_int_backend<N,N,signed_magnitude,unchecked,void> >`.]]
+[[_cppui['N]][Specifies a value of type `number<cpp_int_backend<N,N,signed_magnitude,unchecked,void> >`.]]
+]
+
+In each case, use of these suffixes with hexadecimal values produces a `constexpr` result.
+
+Examples:
+
+ //
+ // Any use of user defined literals requires that we import the literal-operators
+ // into current scope first:
+ using namespace boost::multiprecision::literals;
+ //
+ // To keep things simple in the example, we'll make our types used visible to this scope as well:
+ using namespace boost::multiprecision;
+ //
+ // The value zero as a number<cpp_int_backend<4,4,signed_magnitude,unchecked,void> >:
+ constexpr auto a = 0x0_cppi;
+ // The type of each constant has 4 bits per hexadecimal digit,
+ // so this is of type uint256_t (ie number<cpp_int_backend<256,256,unsigned_magnitude,unchecked,void> >):
+ constexpr auto b = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_cppui;
+ //
+ // Smaller values can be assigned to larger values:
+ int256_t c = 0x1234_cppi; // OK
+ //
+ // However, this does not currently work in constexpr contexts:
+ constexpr int256_t d = 0x1_cppi; // Compiler error
+ //
+ // Constants can be padded out with leading zeros to generate wider types:
+ constexpr uint256_t e = 0x0000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFF_cppui; // OK
+ //
+ // However, specific width types are best produced with specific-width suffixes,
+ // ones supported by default are `_cpp[u]i128`, `_cpp[u]i256`, `_cpp[u]i512`, `_cpp[u]i1024`.
+ //
+ constexpr int128_t f = 0x1234_cppi128; // OK, always produces an int128_t as the result.
+ constexpr uint1024_t g = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccc_cppui1024;
+ //
+ // If other specific width types are required, then there is a macro for generating the operators
+ // for these. The macro can be used at namespace scope only:
+ //
+ BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(2048);
+ //
+ // Now we can create 2048-bit literals as well:
+ constexpr auto h = 0xff_cppi2048; // h is of type number<cpp_int_backend<2048,2048,signed_magnitude,unchecked,void> >
+ //
+ // Finally negative values are handled via the unary minus operator:
+ //
+ constexpr int1024_t i = -0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_cppui1024;
+ //
+ // Which means this also works:
+ constexpr int1024_t j = -g; // OK: unary minus operator is constexpr.
+
 [endsect]
 
 [section:rounding Rounding Rules for Conversions]

Modified: branches/release/libs/multiprecision/example/floating_point_examples.cpp
==============================================================================
--- branches/release/libs/multiprecision/example/floating_point_examples.cpp (original)
+++ branches/release/libs/multiprecision/example/floating_point_examples.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,6 +3,7 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
+#include <boost/math/constants/constants.hpp>
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #include <boost/math/special_functions/gamma.hpp>
 #include <boost/math/special_functions/bessel.hpp>

Modified: branches/release/libs/multiprecision/performance/linpack-benchmark.cpp
==============================================================================
--- branches/release/libs/multiprecision/performance/linpack-benchmark.cpp (original)
+++ branches/release/libs/multiprecision/performance/linpack-benchmark.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -14,7 +14,6 @@
 
 http://www.netlib.org/f2c/libf2c.zip
 */
-#include <boost/lexical_cast.hpp>
 #include <iostream>
 #include <iomanip>
 #include <cmath>
@@ -34,10 +33,37 @@
 #elif defined(TEST_MPF_50)
 #include <boost/multiprecision/gmp.hpp>
 typedef boost::multiprecision::mpf_float_50 real_type;
+#elif defined(NATIVE_FLOAT128)
+#include <boost/multiprecision/float128.hpp>
+typedef __float128 real_type;
+
+std::ostream& operator<<(std::ostream& os, const __float128& f)
+{
+ return os << boost::multiprecision::float128(f);
+}
+
+#include <boost/type_traits/has_left_shift.hpp>
+
+namespace boost{
+
+template<>
+struct has_left_shift<std::basic_ostream<char>, __float128> : public mpl::true_ {};
+
+template<>
+double lexical_cast<double, __float128>(const __float128& f)
+{ return f; }
+
+}
+
+#elif defined(TEST_FLOAT128)
+#include <boost/multiprecision/float128.hpp>
+typedef boost::multiprecision::float128 real_type;
 #else
 typedef double real_type;
 #endif
 
+#include <boost/lexical_cast.hpp>
+
 #ifndef CAST_TO_RT
 # define CAST_TO_RT(x) x
 #endif
@@ -87,7 +113,6 @@
 int daxpy_(integer *, real_type *, real_type *, integer *, real_type *, integer *);
 int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type *);
 
-
 extern "C" int MAIN__()
 {
 #ifdef TEST_MPF_50
@@ -102,6 +127,10 @@
    mpfr_set_default_prec(((50 + 1) * 1000L) / 301L);
 #elif defined(TEST_CPP_DEC_FLOAT)
    std::cout << "Testing number<cpp_dec_float<50> >" << std::endl;
+#elif defined(NATIVE_FLOAT128)
+ std::cout << "Testing __float128" << std::endl;
+#elif defined(TEST_FLOAT128)
+ std::cout << "Testing number<float128_backend, et_off>" << std::endl;
 #else
    std::cout << "Testing double" << std::endl;
 #endif
@@ -911,6 +940,8 @@
    return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L);
 #elif defined(TEST_CPP_DEC_FLOAT_BN)
    return std::pow(10.0, 1-std::numeric_limits<efx::cpp_dec_float_50>::digits10);
+#elif defined(NATIVE_FLOAT128)
+ return FLT128_EPSILON;
 #else
    return CAST_TO_RT(std::numeric_limits<real_type>::epsilon());
 #endif

Modified: branches/release/libs/multiprecision/test/Jamfile.v2
==============================================================================
--- branches/release/libs/multiprecision/test/Jamfile.v2 (original)
+++ branches/release/libs/multiprecision/test/Jamfile.v2 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -21,12 +21,6 @@
    <include>$(mpfi_path)/src
    <include>$(tommath_path)
    <include>../../..
- <search>$(gmp_path)
- <search>$(mpfr_path)
- <search>$(mpfr_path)/build.vc10/lib/Win32/Debug
- <search>$(mpfi_path)
- <search>$(mpfi_path)/src
- <search>$(tommath_path)
    # We set these to make it easier to set up and test GMP and MPFR under Win32:
    <toolset>msvc:<runtime-link>static
    <toolset>msvc:<link>static
@@ -44,17 +38,19 @@
 local enable-specfun = [ MATCH (--enable-specfun) : [ modules.peek : ARGV ] ] ;
 local disable-concepts = [ MATCH (--disable-concepts) : [ modules.peek : ARGV ] ] ;
 
-lib gmp ;
-lib mpfr ;
-lib mpfi ;
+lib gmp : : <search>$(gmp_path) ;
+lib mpfr : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug ;
+lib mpfi : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug <search>$(mpfi_path) <search>$(mpfi_path)/src ;
+lib quadmath ;
 
 if $(tommath_path)
 {
- TOMMATH = [ GLOB $(tommath_path) : *.c ] ;
+ lib tommath : [ GLOB $(tommath_path) : *.c ] ;
+ TOMMATH = tommath ;
 }
 else
 {
- lib tommath ;
+ lib tommath : : <search>$(tommath_path) ;
    TOMMATH = tommath ;
 }
 
@@ -111,6 +107,9 @@
 
 run test_arithmetic_mpfi_50.cpp mpfi mpfr gmp : : : [ check-target-builds ../config//has_mpfi : : <build>no ] ;
 
+run test_arithmetic_float_128.cpp quadmath : : : [ check-target-builds ../config//has_float128 : : <build>no ] ;
+run test_arithmetic_float_128.cpp : : : [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] : test_arithmetic_intel_quad ;
+
 run test_numeric_limits.cpp
         : # command line
         : # input files
@@ -196,6 +195,22 @@
          [ check-target-builds ../config//has_mpfi : : <build>no ]
         : test_numeric_limits_mpfi_50 ;
 
+
+run test_numeric_limits.cpp quadmath
+ : # command line
+ : # input files
+ : # requirements
+ <define>TEST_FLOAT128
+ [ check-target-builds ../config//has_float128 : : <build>no ]
+ : test_numeric_limits_float128 ;
+run test_numeric_limits.cpp
+ : # command line
+ : # input files
+ : # requirements
+ <define>TEST_FLOAT128
+ [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ]
+ : test_numeric_limits_intel_quad ;
+
 for local source in test_exp.cpp test_log.cpp test_pow.cpp test_sinh.cpp test_sqrt.cpp test_cosh.cpp test_tanh.cpp test_sin.cpp test_cos.cpp test_tan.cpp test_asin.cpp test_acos.cpp test_atan.cpp test_round.cpp test_fpclassify.cpp
 {
       run $(source) gmp
@@ -225,6 +240,20 @@
            : # requirements
             <define>TEST_CPP_DEC_FLOAT
            : $(source:B)_cpp_dec_float ;
+ run $(source) quadmath
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_float128 : : <build>no ]
+ <define>TEST_FLOAT128
+ : $(source:B)_float128 ;
+ run $(source)
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ]
+ <define>TEST_FLOAT128
+ : $(source:B)_intel_quad ;
 }
 
 run test_gmp_conversions.cpp gmp
@@ -295,7 +324,8 @@
         : test_move_cpp_int ;
 
 run test_test.cpp ;
-compile test_constexpr.cpp ;
+run test_cpp_int_lit.cpp ;
+compile test_constexpr.cpp : [ check-target-builds ../config//has_float128 : <define>HAVE_FLOAT128 : ] [ check-target-builds ../config//has_intel_quad : <define>HAVE_FLOAT128 : ] ;
 
 run test_float_io.cpp
         : # command line
@@ -332,6 +362,23 @@
          [ check-target-builds ../config//has_mpfi : : <build>no ]
         : test_float_io_mpfi ;
 
+run test_float_io.cpp quadmath
+ : # command line
+ : # input files
+ : # requirements
+ <define>TEST_FLOAT128
+ release # Otherwise runtime is slow
+ [ check-target-builds ../config//has_float128 : : <build>no ]
+ : test_float_io_float128 ;
+run test_float_io.cpp
+ : # command line
+ : # input files
+ : # requirements
+ <define>TEST_FLOAT128
+ release # Otherwise runtime is slow
+ [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ]
+ : test_float_io_intel_quad ;
+
 run test_int_io.cpp $(TOMMATH)
         : # command line
         : # input files
@@ -453,6 +500,19 @@
         : # requirements
          [ check-target-builds ../config//has_mpfi : : <build>no ] ;
 
+run ../example/float128_snips.cpp quadmath
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_float128 : : <build>no ] ;
+
+run ../example/float128_snips.cpp
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ]
+ : float128_snips_intel_quad ;
+
 run ../example/logged_adaptor.cpp mpfi mpfr gmp
         : # command line
         : # input files
@@ -467,7 +527,7 @@
         : # input files
         : # requirements
          [ check-target-builds ../config//has_tommath : : <build>no ] ;
-run ../example/floating_point_examples.cpp : : : <toolset>gcc:<cxxflags>-std=c++0x ;
+run ../example/floating_point_examples.cpp : : : <toolset>gcc:<cxxflags>-std=gnu++0x ;
 run test_cpp_int_conv.cpp ;
 run test_native_integer.cpp ;
 
@@ -513,7 +573,10 @@
 
    for local source in [ glob math/*.cpp ]
    {
- run $(source) mpfr gmp /boost/test//boost_unit_test_framework/<link>static /boost/regex//boost_regex/<link>static
+ run $(source) mpfr gmp
+ /boost/test//boost_unit_test_framework/<link>static
+ /boost/regex//boost_regex/<link>static
+ math/instances//test_instances_mpfr/<link>static
            : # command line
            : # input files
            : # requirements
@@ -524,7 +587,10 @@
             <toolset>msvc:<cxxflags>-bigobj
             release
            : $(source:B)_mpfr ;
- run $(source) gmp /boost/test//boost_unit_test_framework/<link>static /boost/regex//boost_regex/<link>static
+ run $(source) gmp
+ /boost/test//boost_unit_test_framework/<link>static
+ /boost/regex//boost_regex/<link>static
+ math/instances//test_instances_mpf/<link>static
            : # command line
            : # input files
            : # requirements
@@ -535,7 +601,9 @@
             <toolset>msvc:<cxxflags>-bigobj
             release
            : $(source:B)_mpf ;
- run $(source) /boost/test//boost_unit_test_framework/<link>static /boost/regex//boost_regex/<link>static
+ run $(source) /boost/test//boost_unit_test_framework/<link>static
+ /boost/regex//boost_regex/<link>static
+ math/instances//test_instances_cpp_dec_float/<link>static
            : # command line
            : # input files
            : # requirements
@@ -545,6 +613,34 @@
             <toolset>msvc:<cxxflags>-bigobj
             release
            : $(source:B)_cpp_dec_float ;
+ run $(source) quadmath
+ /boost/test//boost_unit_test_framework/<link>static
+ /boost/regex//boost_regex/<link>static
+ math/instances//test_instances_float128/<link>static
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_float128 : : <build>no ]
+ <optimization>speed
+ <define>TEST_FLOAT128
+ <define>BOOST_ALL_NO_LIB
+ <toolset>msvc:<cxxflags>-bigobj
+ release
+ : $(source:B)_float128 ;
+ run $(source)
+ /boost/test//boost_unit_test_framework/<link>static
+ /boost/regex//boost_regex/<link>static
+ math/instances//test_instances_intel_quad/<link>static
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ]
+ <optimization>speed
+ <define>TEST_FLOAT128
+ <define>BOOST_ALL_NO_LIB
+ <toolset>msvc:<cxxflags>-bigobj
+ release
+ : $(source:B)_intel_quad ;
    }
 }
 
@@ -631,3 +727,8 @@
    }
 }
 
+
+
+
+
+

Modified: branches/release/libs/multiprecision/test/coverage/Makefile
==============================================================================
--- branches/release/libs/multiprecision/test/coverage/Makefile (original)
+++ branches/release/libs/multiprecision/test/coverage/Makefile 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -18,9 +18,7 @@
 ../../../../boost/multiprecision/detail/big_lanczos.hpp\
 ../../../../boost/multiprecision/detail/digits.hpp\
 ../../../../boost/multiprecision/detail/no_et_ops.hpp\
-../../../../boost/multiprecision/detail/cpp_int_core.hpp\
 ../../../../boost/multiprecision/detail/number_base.hpp\
-../../../../boost/multiprecision/detail/cpp_int_trivial_ops.hpp\
 ../../../../boost/multiprecision/detail/generic_interconvert.hpp\
 ../../../../boost/multiprecision/detail/number_compare.hpp\
 ../../../../boost/multiprecision/detail/default_ops.hpp\
@@ -32,70 +30,181 @@
 ../../../../boost/multiprecision/traits/is_restricted_conversion.hpp
 
 coverage : run
- gcov test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_3 test_arithmetic_cpp_dec_float test_arithmetic_concept test_arithmetic_mpz test_arithmetic_mpf test_arithmetic_mpf_50 test_arithmetic_mpq test_arithmetic_mpfr test_arithmetic_mpfr_50 test_cpp_int test_int_io test_float_io test_rational_io test_gmp_conversions test_mpfr_conversions test_cpp_int_conv
+ gcov test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_3 \
+ gcov test_arithmetic_cpp_int_4 test_arithmetic_cpp_int_5 test_arithmetic_cpp_int_6 \
+ gcov test_arithmetic_cpp_int_7 test_arithmetic_cpp_int_8 test_arithmetic_cpp_int_9 \
+ gcov test_arithmetic_cpp_int_10 test_arithmetic_cpp_int_11 test_arithmetic_cpp_int_12 \
+ gcov test_arithmetic_cpp_int_13 test_arithmetic_cpp_int_14 test_arithmetic_cpp_int_15 \
+ gcov test_arithmetic_cpp_int_16 test_arithmetic_cpp_int_17 test_arithmetic_cpp_int_18 \
+ test_arithmetic_cpp_dec_float_1 test_arithmetic_cpp_dec_float_2 test_arithmetic_cpp_dec_float_3\
+ test_arithmetic_concept test_arithmetic_mpz test_arithmetic_mpf \
+ test_arithmetic_mpf_50 test_arithmetic_mpq test_arithmetic_mpfr test_arithmetic_mpfr_50 test_cpp_int \
+ test_int_io test_float_io test_rational_io test_gmp_conversions test_mpfr_conversions test_cpp_int_conv
 
-test_arithmetic_cpp_int_1.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_CPP_INT_1 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_1.o -c ../test_arithmetic.cpp
+test_arithmetic_cpp_int_1.o : ../test_arithmetic_cpp_int_1.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_1 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_1.o -c ../test_arithmetic_cpp_int_1.cpp
 
 test_arithmetic_cpp_int_1 : test_arithmetic_cpp_int_1.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_1.o
 
-test_arithmetic_cpp_int_2.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_CPP_INT_2 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_2.o -c ../test_arithmetic.cpp
+test_arithmetic_cpp_int_2.o : ../test_arithmetic_cpp_int_2.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_2 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_2.o -c ../test_arithmetic_cpp_int_2.cpp
 
 test_arithmetic_cpp_int_2 : test_arithmetic_cpp_int_2.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_2.o
 
-test_arithmetic_cpp_int_3.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_3.o -c ../test_arithmetic.cpp
+test_arithmetic_cpp_int_3.o : ../test_arithmetic_cpp_int_3.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_3.o -c ../test_arithmetic_cpp_int_3.cpp
 
 test_arithmetic_cpp_int_3 : test_arithmetic_cpp_int_3.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_3 test_arithmetic_cpp_int_3.o
 
-test_arithmetic_cpp_dec_float.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_CPP_DEC_FLOAT --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_dec_float.o -c ../test_arithmetic.cpp
+test_arithmetic_cpp_int_4.o : ../test_arithmetic_cpp_int_4.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_4.o -c ../test_arithmetic_cpp_int_4.cpp
 
-test_arithmetic_cpp_dec_float : test_arithmetic_cpp_dec_float.o
- g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_dec_float test_arithmetic_cpp_dec_float.o
+test_arithmetic_cpp_int_4 : test_arithmetic_cpp_int_4.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_4 test_arithmetic_cpp_int_4.o
 
-test_arithmetic_concept.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_BACKEND --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_concept.o -c ../test_arithmetic.cpp
+test_arithmetic_cpp_int_5.o : ../test_arithmetic_cpp_int_5.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_5.o -c ../test_arithmetic_cpp_int_5.cpp
+
+test_arithmetic_cpp_int_5 : test_arithmetic_cpp_int_5.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_5 test_arithmetic_cpp_int_5.o
+
+test_arithmetic_cpp_int_6.o : ../test_arithmetic_cpp_int_6.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_6.o -c ../test_arithmetic_cpp_int_6.cpp
+
+test_arithmetic_cpp_int_6 : test_arithmetic_cpp_int_6.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_6 test_arithmetic_cpp_int_6.o
+
+test_arithmetic_cpp_int_7.o : ../test_arithmetic_cpp_int_7.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_7.o -c ../test_arithmetic_cpp_int_7.cpp
+
+test_arithmetic_cpp_int_7 : test_arithmetic_cpp_int_7.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_7 test_arithmetic_cpp_int_7.o
+
+test_arithmetic_cpp_int_8.o : ../test_arithmetic_cpp_int_8.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_8.o -c ../test_arithmetic_cpp_int_8.cpp
+
+test_arithmetic_cpp_int_8 : test_arithmetic_cpp_int_8.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_8 test_arithmetic_cpp_int_8.o
+
+test_arithmetic_cpp_int_9.o : ../test_arithmetic_cpp_int_9.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_9.o -c ../test_arithmetic_cpp_int_9.cpp
+
+test_arithmetic_cpp_int_9 : test_arithmetic_cpp_int_9.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_9 test_arithmetic_cpp_int_9.o
+
+test_arithmetic_cpp_int_10.o : ../test_arithmetic_cpp_int_10.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_10.o -c ../test_arithmetic_cpp_int_10.cpp
+
+test_arithmetic_cpp_int_10 : test_arithmetic_cpp_int_10.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_10 test_arithmetic_cpp_int_10.o
+
+test_arithmetic_cpp_int_11.o : ../test_arithmetic_cpp_int_11.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_11.o -c ../test_arithmetic_cpp_int_12.cpp
+
+test_arithmetic_cpp_int_11 : test_arithmetic_cpp_int_11.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_11 test_arithmetic_cpp_int_11.o
+
+test_arithmetic_cpp_int_12.o : ../test_arithmetic_cpp_int_12.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_12.o -c ../test_arithmetic_cpp_int_12.cpp
+
+test_arithmetic_cpp_int_12 : test_arithmetic_cpp_int_12.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_12 test_arithmetic_cpp_int_12.o
+
+test_arithmetic_cpp_int_13.o : ../test_arithmetic_cpp_int_13.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_13.o -c ../test_arithmetic_cpp_int_13.cpp
+
+test_arithmetic_cpp_int_13 : test_arithmetic_cpp_int_13.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_13 test_arithmetic_cpp_int_13.o
+
+test_arithmetic_cpp_int_14.o : ../test_arithmetic_cpp_int_14.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_14.o -c ../test_arithmetic_cpp_int_14.cpp
+
+test_arithmetic_cpp_int_14 : test_arithmetic_cpp_int_14.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_14 test_arithmetic_cpp_int_14.o
+
+test_arithmetic_cpp_int_15.o : ../test_arithmetic_cpp_int_15.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_15.o -c ../test_arithmetic_cpp_int_15.cpp
+
+test_arithmetic_cpp_int_15 : test_arithmetic_cpp_int_15.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_15 test_arithmetic_cpp_int_15.o
+
+test_arithmetic_cpp_int_16.o : ../test_arithmetic_cpp_int_16.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_16.o -c ../test_arithmetic_cpp_int_16.cpp
+
+test_arithmetic_cpp_int_16 : test_arithmetic_cpp_int_16.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_16 test_arithmetic_cpp_int_16.o
+
+test_arithmetic_cpp_int_17.o : ../test_arithmetic_cpp_int_17.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_17.o -c ../test_arithmetic_cpp_int_17.cpp
+
+test_arithmetic_cpp_int_17 : test_arithmetic_cpp_int_17.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_17 test_arithmetic_cpp_int_17.o
+
+test_arithmetic_cpp_int_18.o : ../test_arithmetic_cpp_int_18.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_18.o -c ../test_arithmetic_cpp_int_18.cpp
+
+test_arithmetic_cpp_int_18 : test_arithmetic_cpp_int_18.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_18 test_arithmetic_cpp_int_18.o
+
+test_arithmetic_cpp_dec_float_1.o : ../test_arithmetic_cpp_dec_float_1.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_DEC_FLOAT --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_dec_float_1.o -c ../test_arithmetic_cpp_dec_float_1.cpp
+
+test_arithmetic_cpp_dec_float_1 : test_arithmetic_cpp_dec_float_1.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_dec_float_1 test_arithmetic_cpp_dec_float_1.o
+
+test_arithmetic_cpp_dec_float_2.o : ../test_arithmetic_cpp_dec_float_2.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_DEC_FLOAT --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_dec_float_2.o -c ../test_arithmetic_cpp_dec_float_2.cpp
+
+test_arithmetic_cpp_dec_float_2 : test_arithmetic_cpp_dec_float_2.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_dec_float_2 test_arithmetic_cpp_dec_float_2.o
+
+test_arithmetic_cpp_dec_float_3.o : ../test_arithmetic_cpp_dec_float_3.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_CPP_DEC_FLOAT --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_dec_float_3.o -c ../test_arithmetic_cpp_dec_float_3.cpp
+
+test_arithmetic_cpp_dec_float_3 : test_arithmetic_cpp_dec_float_3.o
+ g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_dec_float_3 test_arithmetic_cpp_dec_float_3.o
+
+test_arithmetic_concept.o : ../test_arithmetic_backend_concept.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_BACKEND --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_concept.o -c ../test_arithmetic_backend_concept.cpp
 
 test_arithmetic_concept : test_arithmetic_concept.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_concept test_arithmetic_concept.o
 
-test_arithmetic_mpz.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_MPZ --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpz.o -c ../test_arithmetic.cpp
+test_arithmetic_mpz.o : ../test_arithmetic_mpz.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_MPZ --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpz.o -c ../test_arithmetic_mpz.cpp
 
 test_arithmetic_mpz : test_arithmetic_mpz.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_mpz test_arithmetic_mpz.o -lgmp
 
-test_arithmetic_mpf.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_MPF --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpf.o -c ../test_arithmetic.cpp
+test_arithmetic_mpf.o : ../test_arithmetic_mpf.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_MPF --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpf.o -c ../test_arithmetic_mpf.cpp
 
 test_arithmetic_mpf : test_arithmetic_mpf.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_mpf test_arithmetic_mpf.o -lgmp
 
-test_arithmetic_mpf_50.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_MPF_50 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpf_50.o -c ../test_arithmetic.cpp
+test_arithmetic_mpf_50.o : ../test_arithmetic_mpf_50.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_MPF_50 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpf_50.o -c ../test_arithmetic_mpf_50.cpp
 
 test_arithmetic_mpf_50 : test_arithmetic_mpf_50.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_mpf_50 test_arithmetic_mpf_50.o -lgmp
 
-test_arithmetic_mpq.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_MPQ --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpq.o -c ../test_arithmetic.cpp
+test_arithmetic_mpq.o : ../test_arithmetic_mpq.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_MPQ --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpq.o -c ../test_arithmetic_mpq.cpp
 
 test_arithmetic_mpq : test_arithmetic_mpq.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_mpq test_arithmetic_mpq.o -lgmp
 
-test_arithmetic_mpfr.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_MPFR --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpfr.o -c ../test_arithmetic.cpp
+test_arithmetic_mpfr.o : ../test_arithmetic_mpfr.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_MPFR --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpfr.o -c ../test_arithmetic_mpfr.cpp
 
 test_arithmetic_mpfr : test_arithmetic_mpfr.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_mpfr test_arithmetic_mpfr.o -lmpfr -lgmp
 
-test_arithmetic_mpfr_50.o : ../test_arithmetic.cpp $(SOURCES)
- g++ -std=gnu++0x -DTEST_MPFR_50 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpfr_50.o -c ../test_arithmetic.cpp
+test_arithmetic_mpfr_50.o : ../test_arithmetic_mpfr_50.cpp $(SOURCES)
+ g++ -std=gnu++0x -DTEST_MPFR_50 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpfr_50.o -c ../test_arithmetic_mpfr_50.cpp
 
 test_arithmetic_mpfr_50 : test_arithmetic_mpfr_50.o
         g++ -std=gnu++0x --coverage -o test_arithmetic_mpfr_50 test_arithmetic_mpfr_50.o -lmpfr -lgmp
@@ -113,7 +222,7 @@
         g++ -std=gnu++0x --coverage -o test_int_io test_int_io.o -lgmp
 
 test_float_io.o : ../test_float_io.cpp $(SOURCES)
- g++ -std=gnu++0x --coverage -g -I../../../.. -I../../../../../../trunk -o test_float_io.o -c ../test_float_io.cpp
+ g++ -std=gnu++0x --coverage -g -DTEST_MPF_50 -DTEST_CPP_DEC_FLOAT -DTEST_MPFR_50 -I../../../.. -I../../../../../../trunk -o test_float_io.o -c ../test_float_io.cpp
 
 test_float_io : test_float_io.o
         g++ -std=gnu++0x --coverage -o test_float_io test_float_io.o -lmpfr -lgmp
@@ -142,12 +251,36 @@
 test_cpp_int_conv : test_cpp_int_conv.o
         g++ -std=gnu++0x --coverage -o test_cpp_int_conv test_cpp_int_conv.o
 
-run : test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_3 test_arithmetic_cpp_dec_float test_arithmetic_concept test_arithmetic_mpz test_arithmetic_mpf test_arithmetic_mpf_50 \
-test_arithmetic_mpq test_arithmetic_mpfr test_arithmetic_mpfr_50 test_cpp_int test_int_io test_float_io test_rational_io test_gmp_conversions test_mpfr_conversions test_cpp_int_conv
+run : test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_3 \
+ test_arithmetic_cpp_int_4 test_arithmetic_cpp_int_5 test_arithmetic_cpp_int_6 \
+ test_arithmetic_cpp_int_7 test_arithmetic_cpp_int_8 test_arithmetic_cpp_int_9 \
+ test_arithmetic_cpp_int_10 test_arithmetic_cpp_int_11 test_arithmetic_cpp_int_12 \
+ test_arithmetic_cpp_int_13 test_arithmetic_cpp_int_14 test_arithmetic_cpp_int_15 \
+ test_arithmetic_cpp_int_16 test_arithmetic_cpp_int_17 test_arithmetic_cpp_int_18 \
+ test_arithmetic_cpp_dec_float_1 test_arithmetic_cpp_dec_float_2 test_arithmetic_cpp_dec_float_3 test_arithmetic_concept \
+ test_arithmetic_mpz test_arithmetic_mpf test_arithmetic_mpf_50 test_arithmetic_mpq test_arithmetic_mpfr test_arithmetic_mpfr_50 \
+ test_cpp_int test_int_io test_float_io test_rational_io test_gmp_conversions test_mpfr_conversions test_cpp_int_conv
         ./test_arithmetic_cpp_int_1
         ./test_arithmetic_cpp_int_2
         ./test_arithmetic_cpp_int_3
- ./test_arithmetic_cpp_dec_float
+ ./test_arithmetic_cpp_int_4
+ ./test_arithmetic_cpp_int_5
+ ./test_arithmetic_cpp_int_6
+ ./test_arithmetic_cpp_int_7
+ ./test_arithmetic_cpp_int_8
+ ./test_arithmetic_cpp_int_9
+ ./test_arithmetic_cpp_int_10
+ ./test_arithmetic_cpp_int_11
+ ./test_arithmetic_cpp_int_12
+ ./test_arithmetic_cpp_int_13
+ ./test_arithmetic_cpp_int_14
+ ./test_arithmetic_cpp_int_15
+ ./test_arithmetic_cpp_int_16
+ ./test_arithmetic_cpp_int_17
+ ./test_arithmetic_cpp_int_18
+ ./test_arithmetic_cpp_dec_float_1
+ ./test_arithmetic_cpp_dec_float_2
+ ./test_arithmetic_cpp_dec_float_3
         ./test_arithmetic_concept
         ./test_arithmetic_mpz
         ./test_arithmetic_mpf
@@ -164,9 +297,16 @@
         ./test_cpp_int_conv
 
 clean :
- rm -rf *.o *.gc* test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_3 test_arithmetic_cpp_dec_float test_arithmetic_concept test_arithmetic_mpz \
- test_arithmetic_mpf test_arithmetic_mpf_50 test_arithmetic_mpq test_arithmetic_mpfr test_arithmetic_mpfr_50 test_cpp_int\
- test_int_io test_float_io test_rational_io test_gmp_conversions test_mpfr_conversions test_cpp_int_conv
+ rm -rf *.o *.gc* test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_3 \
+ test_arithmetic_cpp_int_4 test_arithmetic_cpp_int_5 test_arithmetic_cpp_int_6 \
+ test_arithmetic_cpp_int_7 test_arithmetic_cpp_int_8 test_arithmetic_cpp_int_9 \
+ test_arithmetic_cpp_int_10 test_arithmetic_cpp_int_11 test_arithmetic_cpp_int_12 \
+ test_arithmetic_cpp_int_13 test_arithmetic_cpp_int_14 test_arithmetic_cpp_int_15 \
+ test_arithmetic_cpp_int_16 test_arithmetic_cpp_int_17 test_arithmetic_cpp_int_18 \
+ test_arithmetic_cpp_dec_float test_arithmetic_concept test_arithmetic_mpz \
+ test_arithmetic_mpf test_arithmetic_mpf_50 test_arithmetic_mpq test_arithmetic_mpfr test_arithmetic_mpfr_50 test_cpp_int\
+ test_int_io test_float_io test_rational_io test_gmp_conversions test_mpfr_conversions test_cpp_int_conv
+
 
 
 

Modified: branches/release/libs/multiprecision/test/math/log1p_expm1_test.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/log1p_expm1_test.cpp (original)
+++ branches/release/libs/multiprecision/test/math/log1p_expm1_test.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -8,44 +8,10 @@
 // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
 // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
-#define BOOST_TEST_MAIN
-#include <boost/test/unit_test.hpp>
-#include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/log1p.hpp>
-#include <boost/math/special_functions/expm1.hpp>
+#include "setup.hpp"
+//#include <boost/math/special_functions/log1p.hpp>
+//#include <boost/math/special_functions/expm1.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 
 #include "table_type.hpp"
 
@@ -128,23 +94,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp (original)
+++ branches/release/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -8,44 +8,10 @@
 // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
 // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
+#include "setup.hpp"
 
-#define BOOST_TEST_MAIN
-#include <boost/test/unit_test.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/sqrt1pm1.hpp>
-#include <boost/math/special_functions/powm1.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 
 #include "table_type.hpp"
 
@@ -108,6 +74,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_powm1_sqrtp1m1(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -119,24 +90,7 @@
    // 30 decimal digits triggers Boost.Math's 128-bit long double support.
    // 35 decimal digits triggers true arbitrary precision support.
    //
-#ifdef TEST_MPF_50
- // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now.
- //test_powm1_sqrtp1m1(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_powm1_sqrtp1m1(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_powm1_sqrtp1m1(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_powm1_sqrtp1m1(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_powm1_sqrtp1m1(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_powm1_sqrtp1m1(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_powm1_sqrtp1m1(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_powm1_sqrtp1m1(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_powm1_sqrtp1m1(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_powm1_sqrtp1m1(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_SMALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/test_bessel_i.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_bessel_i.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_bessel_i.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -8,42 +8,11 @@
 // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
 // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
+#include "setup.hpp"
 
 #define SC_(x) static_cast<typename table_type<T>::type>(BOOST_STRINGIZE(x))
 
-#include <boost/math/special_functions/bessel.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_bessel_i.hpp"
 
 void expected_results()
@@ -74,6 +43,12 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_bessel(t, p);
+}
+
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -86,25 +61,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now.
- //test_bessel(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_bessel(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_bessel(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_bessel(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_bessel(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_bessel(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_bessel(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_bessel(number<cpp_dec_float<8> >(), "number<cpp_dec_float<8> >");
- test_bessel(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_SMALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/test_bessel_j.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_bessel_j.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_bessel_j.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -8,42 +8,10 @@
 // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
 // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 
-#include <boost/math/special_functions/bessel.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_bessel_j.hpp"
 
 void expected_results()
@@ -117,6 +85,12 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_bessel(t, p);
+}
+
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -128,24 +102,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now.
- //test_bessel(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_bessel(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_bessel(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_bessel(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_bessel(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_bessel(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_bessel(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_bessel(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/test_bessel_k.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_bessel_k.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_bessel_k.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -8,43 +8,10 @@
 // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
 // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-#define BOOST_MATH_SMALL_CONSTANT(x) x
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 
-#include <boost/math/special_functions/bessel.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_bessel_k.hpp"
 
 void expected_results()
@@ -60,7 +27,15 @@
       ".*gmp.*", // test type(s)
       ".*", // test data group
       ".*", 2000, 1500); // test function
-
+#ifdef BOOST_INTEL
+ add_expected_result(
+ ".*", // compiler
+ ".*", // stdlib
+ ".*", // platform
+ ".*float128.*", // test type(s)
+ ".*", // test data group
+ ".*", 300, 100); // test function
+#endif
    add_expected_result(
       ".*", // compiler
       ".*", // stdlib
@@ -90,6 +65,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_bessel(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -101,24 +81,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now.
- test_bessel(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_bessel(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_bessel(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_bessel(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_bessel(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_bessel(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_bessel(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_bessel(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/test_bessel_y.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_bessel_y.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_bessel_y.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -8,42 +8,10 @@
 // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
 // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 
-#include <boost/math/special_functions/bessel.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_bessel_y.hpp"
 
 void expected_results()
@@ -116,6 +84,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_bessel(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -127,24 +100,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough:
- //test_bessel(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_bessel(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_bessel(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_bessel(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_bessel(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_bessel(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_bessel(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_bessel(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_SMALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/test_beta.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_beta.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_beta.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -8,42 +8,10 @@
 // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
 // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_beta.hpp"
 
 void expected_results()
@@ -102,6 +70,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_beta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -113,24 +86,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough:
- test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/test_binomial_coeff.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_binomial_coeff.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_binomial_coeff.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -8,42 +8,10 @@
 // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
 // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 
-#include <boost/math/special_functions/binomial.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_binomial_coeff.hpp"
 
 void expected_results()
@@ -81,6 +49,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_binomial(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -92,24 +65,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough:
- test_binomial(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_binomial(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_binomial(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_binomial(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_binomial(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_binomial(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_binomial(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_binomial(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_binomial(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_binomial(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/test_carlson.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_carlson.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_carlson.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,46 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/ellint_rc.hpp>
-#include <boost/math/special_functions/ellint_rj.hpp>
-#include <boost/math/special_functions/ellint_rd.hpp>
-#include <boost/math/special_functions/ellint_rf.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_carlson.hpp"
 
 void expected_results()
@@ -73,6 +38,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_spots(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -84,24 +54,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough:
- test_spots(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_spots(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_spots(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_spots(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_spots(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_spots(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_spots(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_spots(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/test_cbrt.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_cbrt.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_cbrt.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/cbrt.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_cbrt.hpp"
 
 void expected_results()
@@ -63,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_cbrt(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -74,23 +47,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_cbrt(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_cbrt(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_cbrt(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_cbrt(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_cbrt(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_cbrt(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_cbrt(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_cbrt(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_cbrt(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_cbrt(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 
 

Modified: branches/release/libs/multiprecision/test/math/test_digamma.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_digamma.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_digamma.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/digamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_digamma.hpp"
 
 void expected_results()
@@ -77,6 +45,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_digamma(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -88,22 +61,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_digamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_digamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_digamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_digamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_digamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_digamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_digamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_digamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_digamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_digamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_ellint_1.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ellint_1.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ellint_1.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/ellint_1.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_ellint_1.hpp"
 
 void expected_results()
@@ -70,6 +38,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_spots(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -81,22 +54,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_spots(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_spots(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_spots(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_spots(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_spots(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_spots(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_spots(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_spots(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_ellint_2.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ellint_2.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ellint_2.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/ellint_2.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_ellint_2.hpp"
 
 void expected_results()
@@ -63,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_spots(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -74,22 +47,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_spots(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_spots(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_spots(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_spots(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_spots(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_spots(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_spots(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_spots(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_ellint_3.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ellint_3.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ellint_3.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/ellint_3.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_ellint_3.hpp"
 
 void expected_results()
@@ -69,6 +37,15 @@
       ".*", // test type(s)
       ".*Large.*", // test data group
       ".*", 75, 40); // test function
+#ifdef BOOST_INTEL
+ add_expected_result(
+ ".*", // compiler
+ ".*", // stdlib
+ ".*", // platform
+ ".*float128.*", // test type(s)
+ ".*", // test data group
+ ".*", 200, 30); // test function
+#endif
    add_expected_result(
       ".*", // compiler
       ".*", // stdlib
@@ -84,6 +61,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_spots(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -95,22 +77,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_spots(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_spots(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_spots(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_spots(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_spots(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_spots(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_spots(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_spots(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_erf.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_erf.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_erf.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/erf.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_erf.hpp"
 
 void expected_results()
@@ -62,6 +30,15 @@
       ".*gmp_float<18>.*", // test type(s)
       "Inverse Erf.*", // test data group
       "boost::math::erfc?_inv", 2200, 1500); // test function
+#ifdef BOOST_INTEL
+ add_expected_result(
+ ".*", // compiler
+ ".*", // stdlib
+ ".*", // platform
+ "float128", // test type(s)
+ "Erf Function:.*", // test data group
+ "boost::math::erfc?", 15000, 1000); // test function
+#endif
    add_expected_result(
       ".*", // compiler
       ".*", // stdlib
@@ -84,6 +61,12 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_erf(t, p);
+}
+
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -95,22 +78,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_erf(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_erf(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_erf(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_erf(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_erf(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_erf(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_erf(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_erf(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_erf(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_erf(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_expint.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_expint.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_expint.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/expint.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_expint.hpp"
 
 void expected_results()
@@ -69,6 +37,15 @@
       ".*gmp_float.*", // test type(s)
       ".*", // test data group
       ".*", 250, 100); // test function
+#ifdef BOOST_INTEL
+ add_expected_result(
+ ".*", // compiler
+ ".*", // stdlib
+ ".*", // platform
+ "float128", // test type(s)
+ ".*", // test data group
+ ".*", 4500, 1000); // test function
+#endif
    add_expected_result(
       ".*", // compiler
       ".*", // stdlib
@@ -84,6 +61,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_expint(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -95,22 +77,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_expint(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_expint(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_expint(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_expint(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_expint(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_expint(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_expint(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_expint(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_expint(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_expint(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_gamma.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_gamma.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_gamma.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_gamma.hpp"
 
 void expected_results()
@@ -69,6 +37,15 @@
       ".*", // test type(s)
       "factorials", // test data group
       "boost::math::lgamma", 750, 100); // test function
+#ifdef BOOST_INTEL
+ add_expected_result(
+ ".*", // compiler
+ ".*", // stdlib
+ ".*", // platform
+ "float128", // test type(s)
+ ".*near -.*", // test data group
+ ".*", 150000L, 30000L); // test function
+#endif
    add_expected_result(
       ".*", // compiler
       ".*", // stdlib
@@ -98,6 +75,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_gamma(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -109,22 +91,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_gamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_gamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_gamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_gamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_gamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_gamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_gamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_gamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_hermite.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_hermite.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_hermite.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/hermite.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_hermite.hpp"
 
 void expected_results()
@@ -48,6 +16,15 @@
    // Define the max and mean errors expected for
    // various compilers and platforms.
    //
+#ifdef BOOST_INTEL
+ add_expected_result(
+ ".*", // compiler
+ ".*", // stdlib
+ ".*", // platform
+ "float128", // test type(s)
+ ".*", // test data group
+ "boost::math::hermite", 70, 25); // test function
+#endif
    add_expected_result(
       ".*", // compiler
       ".*", // stdlib
@@ -63,6 +40,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_hermite(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -74,22 +56,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_hermite(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_hermite(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_hermite(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_hermite(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_hermite(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_hermite(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_hermite(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_hermite(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_hermite(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_hermite(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_ibeta.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,46 +3,13 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-#define BOOST_MATH_SMALL_CONSTANT(x) x
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
 #define TEST_DATA 1
 
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_ibeta.hpp"
 
 void expected_results()
@@ -65,6 +32,15 @@
       ".*mpfr_float_backend<18>.*", // test type(s)
       "(?i).*small.*", // test data group
       ".*", 2000, 500); // test function
+#ifdef BOOST_INTEL
+ add_expected_result(
+ "[^|]*", // compiler
+ "[^|]*", // stdlib
+ "[^|]*", // platform
+ "float128", // test type(s)
+ "(?i).*small.*", // test data group
+ ".*", 500, 100); // test function
+#endif
    add_expected_result(
       "[^|]*", // compiler
       "[^|]*", // stdlib
@@ -94,6 +70,12 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_beta(t, p);
+}
+
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -105,22 +87,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_ibeta_2.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_2.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_2.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,46 +3,13 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-#define BOOST_MATH_SMALL_CONSTANT(x) x
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
 #define TEST_DATA 2
 
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_ibeta.hpp"
 
 void expected_results()
@@ -72,6 +39,15 @@
       ".*", // test type(s)
       "(?i).*small.*", // test data group
       ".*", 90, 25); // test function
+#ifdef BOOST_INTEL
+ add_expected_result(
+ "[^|]*", // compiler
+ "[^|]*", // stdlib
+ "[^|]*", // platform
+ "float128", // test type(s)
+ "(?i).*medium.*", // test data group
+ ".*", 5000, 500); // test function
+#endif
    add_expected_result(
       "[^|]*", // compiler
       "[^|]*", // stdlib
@@ -94,6 +70,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_beta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -105,22 +86,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_ibeta_3.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_3.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_3.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,46 +3,13 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-#define BOOST_MATH_SMALL_CONSTANT(x) x
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
 #define TEST_DATA 3
 
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_ibeta.hpp"
 
 void expected_results()
@@ -80,6 +47,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_beta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -91,22 +63,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_ibeta_4.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_4.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_4.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,46 +3,13 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-#define BOOST_MATH_SMALL_CONSTANT(x) x
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
 #define TEST_DATA 4
 
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_ibeta.hpp"
 
 void expected_results()
@@ -87,6 +54,12 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_beta(t, p);
+}
+
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -98,22 +71,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_ibeta_inv_1.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_inv_1.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_inv_1.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,46 +3,13 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-#define BOOST_MATH_SMALL_CONSTANT(x) x
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
 #define TEST_DATA 4
 
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_ibeta_inv.hpp"
 
 void expected_results()
@@ -73,6 +40,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_beta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -84,22 +56,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- //test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_SMALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,46 +3,14 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
 #define TEST_DATA 4
 #define FULL_TEST
 
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_ibeta_inv_ab.hpp"
 
 void expected_results()
@@ -66,6 +34,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_beta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -77,22 +50,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- //test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_igamma.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_igamma.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_igamma.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,10 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-#define BOOST_MATH_SMALL_CONSTANT(x) x
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 
-#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_igamma.hpp"
 
 void expected_results()
@@ -70,6 +37,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_gamma(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -81,22 +53,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_gamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_gamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_gamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_gamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_gamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_gamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_gamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_gamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_igamma_inv.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_igamma_inv.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_igamma_inv.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,44 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-#define BOOST_MATH_SMALL_CONSTANT(x) x
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_igamma_inv.hpp"
 
 void expected_results()
@@ -85,6 +52,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_gamma(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -96,22 +68,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_gamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_gamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_gamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_gamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_gamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_gamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_gamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_gamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_igamma_inva.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_igamma_inva.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_igamma_inva.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,44 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-#define BOOST_MATH_SMALL_CONSTANT(x) x
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_igamma_inva.hpp"
 
 void expected_results()
@@ -64,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_gamma(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -75,22 +47,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_gamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_gamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_gamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_gamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_gamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_gamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_gamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_gamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_laguerre.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_laguerre.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_laguerre.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/laguerre.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_laguerre.hpp"
 
 void expected_results()
@@ -63,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_laguerre(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -74,22 +47,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_laguerre(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_laguerre(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_laguerre(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_laguerre(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_laguerre(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_laguerre(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_laguerre(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_laguerre(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_laguerre(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_laguerre(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_legendre.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_legendre.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_legendre.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/legendre.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_legendre.hpp"
 
 void expected_results()
@@ -63,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_legendre_p(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -74,22 +47,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_legendre_p(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_legendre_p(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_legendre_p(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_legendre_p(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_legendre_p(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_legendre_p(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_legendre_p(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_legendre_p(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_legendre_p(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_legendre_p(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_tgamma_ratio.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_tgamma_ratio.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_tgamma_ratio.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_tgamma_ratio.hpp"
 
 void expected_results()
@@ -77,6 +45,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_tgamma_ratio(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -88,22 +61,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_tgamma_ratio(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_tgamma_ratio(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_tgamma_ratio(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_tgamma_ratio(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_tgamma_ratio(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_tgamma_ratio(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_tgamma_ratio(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_tgamma_ratio(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_tgamma_ratio(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_tgamma_ratio(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/math/test_zeta.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_zeta.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_zeta.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -3,43 +3,11 @@
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
-#ifdef _MSC_VER
-# define _SCL_SECURE_NO_WARNINGS
-#endif
-
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
-
-#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
-# define TEST_MPF_50
-# define TEST_MPFR_50
-# define TEST_CPP_DEC_FLOAT
-
-#ifdef _MSC_VER
-#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
-#endif
-#ifdef __GNUC__
-#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
-#endif
-
-#endif
-
-#if defined(TEST_MPF_50)
-#include <boost/multiprecision/gmp.hpp>
-#endif
-#if defined(TEST_MPFR_50)
-#include <boost/multiprecision/mpfr.hpp>
-#endif
-#ifdef TEST_BACKEND
-#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-#include <boost/multiprecision/cpp_dec_float.hpp>
-#endif
-
+#include "setup.hpp"
 #include "table_type.hpp"
 #define TEST_UDT
 
-#include <boost/math/special_functions/zeta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "libs/math/test/test_zeta.hpp"
 
 void expected_results()
@@ -55,6 +23,15 @@
       ".*", // test type(s)
       ".*Random values less than 1", // test data group
       ".*", 6000, 3000); // test function
+#ifdef BOOST_INTEL
+ add_expected_result(
+ ".*", // compiler
+ ".*", // stdlib
+ ".*", // platform
+ "float128", // test type(s)
+ ".*close to and less than 1.*", // test data group
+ ".*", 10000000L, 2000000L); // test function
+#endif
    add_expected_result(
       ".*", // compiler
       ".*", // stdlib
@@ -70,6 +47,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+ test_zeta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -82,23 +64,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
- test_zeta(number<gmp_float<18> >(), "number<gmp_float<18> >");
- test_zeta(number<gmp_float<30> >(), "number<gmp_float<30> >");
- test_zeta(number<gmp_float<35> >(), "number<gmp_float<35> >");
- // there should be at least one test with expression templates off:
- test_zeta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
- test_zeta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
- test_zeta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
- test_zeta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
- test_zeta(number<cpp_dec_float<9> >(), "number<cpp_dec_float<9> >");
- test_zeta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
- test_zeta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
- test_zeta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+ ALL_TESTS
 }
 

Modified: branches/release/libs/multiprecision/test/test_acos.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_acos.cpp (original)
+++ branches/release/libs/multiprecision/test/test_acos.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 //# define TEST_MPF
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
 # define TEST_MPFI_50
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -123,6 +127,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_arithmetic.hpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_arithmetic.hpp (original)
+++ branches/release/libs/multiprecision/test/test_arithmetic.hpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -1728,6 +1728,9 @@
    b = 30;
    c = a + b * c;
    BOOST_CHECK_EQUAL(c , 20 + 30 * 10);
+ c = 10;
+ c = a + b / c;
+ BOOST_CHECK_EQUAL(c , 20 + 30 / 10);
 
    //
    // Test conditionals:

Modified: branches/release/libs/multiprecision/test/test_arithmetic_cpp_dec_float_1.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_arithmetic_cpp_dec_float_1.cpp (original)
+++ branches/release/libs/multiprecision/test/test_arithmetic_cpp_dec_float_1.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -20,6 +20,6 @@
 int main()
 {
    test<boost::multiprecision::cpp_dec_float_50>();
- return 0;
+ return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_asin.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_asin.cpp (original)
+++ branches/release/libs/multiprecision/test/test_asin.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 //# define TEST_MPF
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
 # define TEST_MPFI_50
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -122,6 +126,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_atan.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_atan.cpp (original)
+++ branches/release/libs/multiprecision/test/test_atan.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 //# define TEST_MPF
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
 # define TEST_MPFI_50
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifdef BOOST_MSVC
 #pragma warning(disable:4127)
@@ -276,6 +280,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_constexpr.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_constexpr.cpp (original)
+++ branches/release/libs/multiprecision/test/test_constexpr.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -4,6 +4,9 @@
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #include <boost/multiprecision/cpp_int.hpp>
+#if defined(HAVE_FLOAT128)
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifndef BOOST_NO_CXX11_CONSTEXPR
 
@@ -51,4 +54,8 @@
 template void test3<number<cpp_int_backend<2048, 2048, unsigned_magnitude, unchecked, void>, et_off> >();
 template void test2<number<cpp_int_backend<2048, 2048, signed_magnitude, unchecked, void>, et_off> >();
 
+#if defined(HAVE_FLOAT128)
+template void test1<float128>();
+#endif
+
 #endif

Modified: branches/release/libs/multiprecision/test/test_cos.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_cos.cpp (original)
+++ branches/release/libs/multiprecision/test/test_cos.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 //# define TEST_MPF
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
 # define TEST_MPFI_50
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -248,7 +252,11 @@
          max_err = err;
    }
    std::cout << "Max error was: " << max_err << std::endl;
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(max_err < 8000);
+#else
    BOOST_TEST(max_err < 750);
+#endif
 
    //
    // Test with some exact binary values as input - this tests our code
@@ -283,7 +291,11 @@
    BOOST_TEST(max_err < 20);
 
    BOOST_TEST(cos(T(0)) == 1);
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(fabs(cos(half_pi)) < 4 * std::numeric_limits<T>::epsilon());
+#else
    BOOST_TEST(fabs(cos(half_pi)) < std::numeric_limits<T>::epsilon());
+#endif
 }
 
 
@@ -319,6 +331,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_cosh.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_cosh.cpp (original)
+++ branches/release/libs/multiprecision/test/test_cosh.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 //# define TEST_MPF
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
 # define TEST_MPFI_50
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -161,6 +165,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_exp.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_exp.cpp (original)
+++ branches/release/libs/multiprecision/test/test_exp.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,15 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) \
+ && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) \
+ && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 //# define TEST_MPF
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
 # define TEST_MPFI_50
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +50,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -128,7 +134,11 @@
       }
    }
    std::cout << "Max error was: " << max_err << std::endl;
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(max_err < 40000);
+#else
    BOOST_TEST(max_err < 5000);
+#endif
 
    static const boost::array<boost::array<T, 2>, 10> exact_data =
    {{
@@ -204,6 +214,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_float_io.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_float_io.cpp (original)
+++ branches/release/libs/multiprecision/test/test_float_io.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -9,11 +9,13 @@
 # define _SCL_SECURE_NO_WARNINGS
 #endif
 
-#if !defined(TEST_MPF_50) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) \
+ && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 # define TEST_CPP_DEC_FLOAT
 # define TEST_MPFR_50
 # define TEST_MPFI_50
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -36,6 +38,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #include <boost/random/mersenne_twister.hpp>
 #include <boost/random/uniform_int.hpp>
@@ -50,11 +55,15 @@
 
 #if defined(TEST_MPF_50)
 template <unsigned N, boost::multiprecision::expression_template_option ET>
-bool is_mpf(const boost::multiprecision::number<boost::multiprecision::gmp_float<N>, ET>&)
+bool has_bad_bankers_rounding(const boost::multiprecision::number<boost::multiprecision::gmp_float<N>, ET>&)
+{ return true; }
+#endif
+#if defined(TEST_FLOAT128) && defined(BOOST_INTEL)
+bool has_bad_bankers_rounding(const boost::multiprecision::float128&)
 { return true; }
 #endif
 template <class T>
-bool is_mpf(const T&) { return false; }
+bool has_bad_bankers_rounding(const T&) { return false; }
 
 bool is_bankers_rounding_error(const std::string& s, const char* expect)
 {
@@ -121,7 +130,7 @@
             const char* expect = string_data[j][col];
             if(ss.str() != expect)
             {
- if(is_mpf(mp_t()) && is_bankers_rounding_error(ss.str(), expect))
+ if(has_bad_bankers_rounding(mp_t()) && is_bankers_rounding_error(ss.str(), expect))
                {
                   std::cout << "Ignoring bankers-rounding error with GMP mp_f.\n";
                }
@@ -316,6 +325,12 @@
    test_round_trip<boost::multiprecision::mpf_float_100>();
    */
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#ifndef BOOST_INTEL
+ test_round_trip<boost::multiprecision::float128>();
+#endif
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_fpclassify.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_fpclassify.cpp (original)
+++ branches/release/libs/multiprecision/test/test_fpclassify.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -14,12 +14,13 @@
 #include <boost/math/special_functions/fpclassify.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 # define TEST_MPFR_50
 # define TEST_MPFI_50
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -45,6 +46,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifdef _MSC_VER
 #pragma warning(disable: 4127) // conditional expression is constant
@@ -324,6 +328,9 @@
 #ifdef TEST_BACKEND
    test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_log.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_log.cpp (original)
+++ branches/release/libs/multiprecision/test/test_log.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,7 +16,7 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 //# define TEST_MPF
 # define TEST_BACKEND
@@ -48,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -193,7 +196,11 @@
          max_err = err;
    }
    std::cout << "Max error was: " << max_err << std::endl;
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(max_err < 20);
+#else
    BOOST_TEST(max_err < 10);
+#endif
    BOOST_TEST(log(T(1)) == 0);
 }
 
@@ -233,6 +240,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_numeric_limits.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_numeric_limits.cpp (original)
+++ branches/release/libs/multiprecision/test/test_numeric_limits.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -11,7 +11,7 @@
 
 #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \
    !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && \
- !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) && !defined(TEST_MPFI_50)
+ !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) && !defined(TEST_MPFI_50) &&!defined(TEST_FLOAT128)
 # define TEST_MPF_50
 # define TEST_MPF
 # define TEST_BACKEND
@@ -23,6 +23,7 @@
 # define TEST_TOMMATH
 # define TEST_CPP_INT
 # define TEST_MPFI_50
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -54,6 +55,9 @@
 #ifdef TEST_CPP_INT
 #include <boost/multiprecision/cpp_int.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifdef BOOST_MSVC
 #pragma warning(disable:4127)
@@ -254,6 +258,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<200, 200, boost::multiprecision::unsigned_magnitude, boost::multiprecision::checked, void> > >();
    test<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<70, 70, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> > >();
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_pow.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_pow.cpp (original)
+++ branches/release/libs/multiprecision/test/test_pow.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,7 +16,7 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 //# define TEST_MPF
 # define TEST_BACKEND
@@ -48,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -607,6 +610,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_round.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_round.cpp (original)
+++ branches/release/libs/multiprecision/test/test_round.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -15,12 +15,13 @@
 #include <boost/random/mersenne_twister.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 # define TEST_MPFR_50
 # define TEST_MPFI_50
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -46,6 +47,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifdef BOOST_MSVC
 #pragma warning(disable:4127)
@@ -433,10 +437,10 @@
 #ifdef TEST_BACKEND
    test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
 
-
-
-

Modified: branches/release/libs/multiprecision/test/test_sin.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_sin.cpp (original)
+++ branches/release/libs/multiprecision/test/test_sin.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 # define TEST_MPFR_50
 # define TEST_MPFI_50
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -316,6 +320,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_sinh.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_sinh.cpp (original)
+++ branches/release/libs/multiprecision/test/test_sinh.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 # define TEST_MPFR_50
 # define TEST_MPFI_50
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -240,6 +244,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_sqrt.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_sqrt.cpp (original)
+++ branches/release/libs/multiprecision/test/test_sqrt.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 # define TEST_MPFR_50
 # define TEST_MPFI_50
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -170,7 +174,11 @@
       }
    }
    std::cout << "Max error was: " << max_err << std::endl;
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(max_err < 30);
+#else
    BOOST_TEST(max_err < 20);
+#endif
 }
 
 
@@ -212,6 +220,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<1000> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_tan.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_tan.cpp (original)
+++ branches/release/libs/multiprecision/test/test_tan.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 # define TEST_MPFI_50
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
 # define TEST_MPFR_50
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -613,6 +617,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 

Modified: branches/release/libs/multiprecision/test/test_tanh.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_tanh.cpp (original)
+++ branches/release/libs/multiprecision/test/test_tanh.cpp 2013-05-16 06:16:32 EDT (Thu, 16 May 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 # define TEST_MPF_50
 # define TEST_MPFR_50
 # define TEST_MPFI_50
 # define TEST_BACKEND
 # define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -156,6 +160,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk