$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
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 1. Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter 1. 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 1. 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 1. 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 1. 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 1. 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
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/ack.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/faq.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/todo.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/overhead.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/internals.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/gmp_float.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/mpfi.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/bitops.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/tom_int.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/debug_adaptor.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/logged_adaptor.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/visualizers.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/mixed.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/primetest.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/br.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/cpp_rational.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/gmp_rational.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adaptor.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/tommath_rational.html
 Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rounding.html
 Modified: branches/release/libs/multiprecision/doc/html/index.html
 Modified: branches/release/libs/multiprecision/doc/multiprecision.qbk
 Modified: branches/release/libs/multiprecision/example/floating_point_examples.cpp
 Modified: branches/release/libs/multiprecision/performance/linpack-benchmark.cpp
 Modified: branches/release/libs/multiprecision/test/Jamfile.v2
 Modified: branches/release/libs/multiprecision/test/coverage/Makefile
 Modified: branches/release/libs/multiprecision/test/math/log1p_expm1_test.cpp
 Modified: branches/release/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_bessel_i.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_bessel_j.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_bessel_k.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_bessel_y.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_beta.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_binomial_coeff.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_carlson.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_cbrt.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_digamma.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_ellint_1.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_ellint_2.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_ellint_3.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_erf.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_expint.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_gamma.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_hermite.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_ibeta.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_ibeta_2.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_ibeta_3.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_ibeta_4.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_ibeta_inv_1.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_igamma.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_igamma_inv.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_igamma_inva.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_laguerre.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_legendre.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_tgamma_ratio.cpp
 Modified: branches/release/libs/multiprecision/test/math/test_zeta.cpp
 Modified: branches/release/libs/multiprecision/test/test_acos.cpp
 Modified: branches/release/libs/multiprecision/test/test_arithmetic.hpp
 Modified: branches/release/libs/multiprecision/test/test_arithmetic_cpp_dec_float_1.cpp
 Modified: branches/release/libs/multiprecision/test/test_asin.cpp
 Modified: branches/release/libs/multiprecision/test/test_atan.cpp
 Modified: branches/release/libs/multiprecision/test/test_constexpr.cpp
 Modified: branches/release/libs/multiprecision/test/test_cos.cpp
 Modified: branches/release/libs/multiprecision/test/test_cosh.cpp
 Modified: branches/release/libs/multiprecision/test/test_exp.cpp
 Modified: branches/release/libs/multiprecision/test/test_float_io.cpp
 Modified: branches/release/libs/multiprecision/test/test_fpclassify.cpp
 Modified: branches/release/libs/multiprecision/test/test_log.cpp
 Modified: branches/release/libs/multiprecision/test/test_numeric_limits.cpp
 Modified: branches/release/libs/multiprecision/test/test_pow.cpp
 Modified: branches/release/libs/multiprecision/test/test_round.cpp
 Modified: branches/release/libs/multiprecision/test/test_sin.cpp
 Modified: branches/release/libs/multiprecision/test/test_sinh.cpp
 Modified: branches/release/libs/multiprecision/test/test_sqrt.cpp
 Modified: branches/release/libs/multiprecision/test/test_tan.cpp
 Modified: branches/release/libs/multiprecision/test/test_tanh.cpp
==============================================================================
--- 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 1. Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter 1. Boost.Multiprecision">
 <link rel="prev" href="../index.html" title="Chapter 1. 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
==============================================================================
--- 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 1. Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter 1. 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
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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"><</span><span class="identifier">B</span><span class="special">></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"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</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">></span> <span class="special">></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"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</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">></span> <span class="special">></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"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</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">></span> <span class="special">></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"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</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">></span> <span class="special">></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<cpp_int_backend<4,4,signed_magnitude,unchecked,void> >:</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<cpp_int_backend<256,256,unsigned_magnitude,unchecked,void> >):</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<cpp_int_backend<2048,2048,signed_magnitude,unchecked,void> ></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>
==============================================================================
--- 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 1. 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++
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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>
==============================================================================
--- 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 1. 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 1. 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>
==============================================================================
--- 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]
==============================================================================
--- 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>
==============================================================================
--- 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
==============================================================================
--- 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 @@
    }
 }
 
+
+
+
+
+
==============================================================================
--- 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
+
 
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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:
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
 
-
-
-
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
==============================================================================
--- 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();
 }
 
 
$include_dir="/home/hyper-archives/boost-commit/include";
include("$include_dir/msg-footer.inc");
?>