$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r83713 - in trunk: boost/multiprecision libs/multiprecision/config libs/multiprecision/example libs/multiprecision/test libs/multiprecision/test/math
From: john_at_[hidden]
Date: 2013-04-02 13:26:54
Author: johnmaddock
Date: 2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
New Revision: 83713
URL: http://svn.boost.org/trac/boost/changeset/83713
Log:
Initial commit of 128-bit float wrapper
Added:
   trunk/boost/multiprecision/float128.hpp   (contents, props changed)
   trunk/libs/multiprecision/test/math/setup.hpp   (contents, props changed)
   trunk/libs/multiprecision/test/test_arithmetic_float_128.cpp   (contents, props changed)
Text files modified: 
   trunk/libs/multiprecision/config/Jamfile.v2                   |     4 ++                                      
   trunk/libs/multiprecision/example/floating_point_examples.cpp |     1                                         
   trunk/libs/multiprecision/test/Jamfile.v2                     |    41 +++++++++++++++++++++++++++             
   trunk/libs/multiprecision/test/math/log1p_expm1_test.cpp      |    55 +-----------------------------------    
   trunk/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp   |    59 ++++----------------------------------- 
   trunk/libs/multiprecision/test/math/test_bessel_i.cpp         |    59 +++++---------------------------------- 
   trunk/libs/multiprecision/test/math/test_bessel_j.cpp         |    59 +++++---------------------------------- 
   trunk/libs/multiprecision/test/math/test_bessel_k.cpp         |    59 ++++----------------------------------- 
   trunk/libs/multiprecision/test/math/test_bessel_y.cpp         |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_beta.cpp             |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_binomial_coeff.cpp   |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_carlson.cpp          |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_cbrt.cpp             |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_digamma.cpp          |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_ellint_1.cpp         |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_ellint_2.cpp         |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_ellint_3.cpp         |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_erf.cpp              |    58 +++++---------------------------------  
   trunk/libs/multiprecision/test/math/test_expint.cpp           |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_gamma.cpp            |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_hermite.cpp          |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_ibeta.cpp            |    59 +++++---------------------------------- 
   trunk/libs/multiprecision/test/math/test_ibeta_2.cpp          |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_ibeta_3.cpp          |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_ibeta_4.cpp          |    59 +++++---------------------------------- 
   trunk/libs/multiprecision/test/math/test_ibeta_inv_1.cpp      |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp   |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_igamma.cpp           |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_igamma_inv.cpp       |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_igamma_inva.cpp      |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/math/test_laguerre.cpp         |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_legendre.cpp         |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_tgamma_ratio.cpp     |    57 ++++---------------------------------   
   trunk/libs/multiprecision/test/math/test_zeta.cpp             |    58 ++++----------------------------------  
   trunk/libs/multiprecision/test/test_acos.cpp                  |     9 +++++                                   
   trunk/libs/multiprecision/test/test_asin.cpp                  |     9 +++++                                   
   trunk/libs/multiprecision/test/test_atan.cpp                  |     9 +++++                                   
   trunk/libs/multiprecision/test/test_cos.cpp                   |     9 +++++                                   
   trunk/libs/multiprecision/test/test_cosh.cpp                  |     9 +++++                                   
   trunk/libs/multiprecision/test/test_exp.cpp                   |    11 ++++++                                  
   trunk/libs/multiprecision/test/test_float_io.cpp              |    10 ++++++                                  
   trunk/libs/multiprecision/test/test_fpclassify.cpp            |     9 +++++                                   
   trunk/libs/multiprecision/test/test_log.cpp                   |     8 ++++                                    
   trunk/libs/multiprecision/test/test_numeric_limits.cpp        |     9 +++++                                   
   trunk/libs/multiprecision/test/test_pow.cpp                   |     8 ++++                                    
   trunk/libs/multiprecision/test/test_round.cpp                 |    12 +++++--                                 
   trunk/libs/multiprecision/test/test_sin.cpp                   |     9 +++++                                   
   trunk/libs/multiprecision/test/test_sinh.cpp                  |     9 +++++                                   
   trunk/libs/multiprecision/test/test_sqrt.cpp                  |     9 +++++                                   
   trunk/libs/multiprecision/test/test_tan.cpp                   |     9 +++++                                   
   trunk/libs/multiprecision/test/test_tanh.cpp                  |     9 +++++                                   
   51 files changed, 399 insertions(+), 1593 deletions(-)
Added: trunk/boost/multiprecision/float128.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/multiprecision/float128.hpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -0,0 +1,400 @@
+///////////////////////////////////////////////////////////////
+//  Copyright 2013 John Maddock. Distributed under the Boost
+//  Software License, Version 1.0. (See accompanying file
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+#ifndef BOOST_MP_FLOAT128_HPP
+#define BOOST_MP_FLOAT128_HPP
+
+extern "C" {
+#include <quadmath.h>
+}
+
+#include <boost/multiprecision/number.hpp>
+
+namespace boost{
+namespace multiprecision{
+namespace backends{
+
+struct float128_backend;
+
+}
+
+using backends::float128_backend;
+
+template<>
+struct number_category<backends::float128_backend> : public mpl::int_<number_kind_floating_point> {};
+template<>
+struct number_category<__float128> : public mpl::int_<number_kind_floating_point> {};
+
+typedef number<float128_backend, et_off> float128;
+
+namespace backends{
+
+struct float128_backend
+{
+   typedef mpl::list<signed char, short, int, long, long long>   signed_types;
+   typedef mpl::list<unsigned char, unsigned short, 
+      unsigned int, unsigned long, unsigned long long>           unsigned_types;
+   typedef mpl::list<float, double, long double>                 float_types;
+   typedef int                                                   exponent_type;
+
+private:
+   __float128 m_value;
+public:
+   float128_backend() : m_value(0) {}
+   float128_backend(const float128_backend& o) : m_value(o.m_value) {}
+   float128_backend& operator = (const float128_backend& o) 
+   {
+      m_value = o.m_value;
+      return *this;
+   }
+   template <class T>
+   float128_backend(const T& i, const typename enable_if_c<is_convertible<T, __float128>::value>::type* = 0)
+      : m_value(i) {}
+   template <class T>
+   typename enable_if_c<is_arithmetic<T>::value || is_convertible<T, __float128>::value, float128_backend&>::type operator = (const T& i)
+   {
+      m_value = i;
+      return *this;
+   }
+   float128_backend& operator = (const char* s)
+   {
+      char* p_end;
+      m_value = strtoflt128(s, &p_end);
+      if(p_end - s != (std::ptrdiff_t)std::strlen(s))
+      {
+         BOOST_THROW_EXCEPTION(std::runtime_error("Unable to interpret input string as a floating point value"));
+      }
+      return *this;
+   }
+   void swap(float128_backend& o)
+   {
+      std::swap(m_value, o.value());
+   }
+   std::string str(std::streamsize digits, std::ios_base::fmtflags f)const
+   {
+      char buf[100];
+      std::string format = "%";
+      if(f & std::ios_base::showpos)
+         format += "+";
+      if(f & std::ios_base::showpoint)
+         format += "#";
+      format += ".*";
+      if(digits == 0)
+         digits = 36;
+      format += "Q";
+      if(f & std::ios_base::scientific)
+         format += "e";
+      else if(f & std::ios_base::fixed)
+         format += "f";
+      else
+         format += "g";
+
+      int v = quadmath_snprintf (buf, 100, format.c_str(), digits, m_value);
+
+      if((v < 0) || (v >= 99))
+         BOOST_THROW_EXCEPTION(std::runtime_error("Formatting quad-float value failed."));
+      return buf;
+   }
+   void negate()
+   {
+      m_value = -m_value;
+   }
+   int compare(const float128_backend& o)const
+   {
+      return m_value == o.m_value ? 0 : m_value < o.m_value ? -1 : 1;
+   }
+   template <class T>
+   int compare(const T& i)const
+   {
+      return m_value == i ? 0 : m_value < i ? -1 : 1;
+   }
+   __float128& value()
+   {
+      return m_value;
+   }
+   const __float128& value()const
+   {
+      return m_value;
+   }
+};
+
+inline void eval_add(float128_backend& result, const float128_backend& a)
+{
+   result.value() += a.value();
+}
+template <class A>
+inline void eval_add(float128_backend& result, const A& a)
+{
+   result.value() += a;
+}
+inline void eval_subtract(float128_backend& result, const float128_backend& a)
+{
+   result.value() -= a.value();
+}
+template <class A>
+inline void eval_subtract(float128_backend& result, const A& a)
+{
+   result.value() -= a;
+}
+inline void eval_multiply(float128_backend& result, const float128_backend& a)
+{
+   result.value() *= a.value();
+}
+template <class A>
+inline void eval_multiply(float128_backend& result, const A& a)
+{
+   result.value() *= a;
+}
+inline void eval_divide(float128_backend& result, const float128_backend& a)
+{
+   result.value() /= a.value();
+}
+template <class A>
+inline void eval_divide(float128_backend& result, const A& a)
+{
+   result.value() /= a;
+}
+
+inline void eval_add(float128_backend& result, const float128_backend& a, const float128_backend& b)
+{
+   result.value() = a.value() + b.value();
+}
+template <class A>
+inline void eval_add(float128_backend& result, const float128_backend& a, const A& b)
+{
+   result.value() = a.value() + b;
+}
+inline void eval_subtract(float128_backend& result, const float128_backend& a, const float128_backend& b)
+{
+   result.value() = a.value() - b.value();
+}
+template <class A>
+inline void eval_subtract(float128_backend& result, const float128_backend& a, const A& b)
+{
+   result.value() = a.value() - b;
+}
+template <class A>
+inline void eval_subtract(float128_backend& result, const A& a, const float128_backend& b)
+{
+   result.value() = a - b.value();
+}
+inline void eval_multiply(float128_backend& result, const float128_backend& a, const float128_backend& b)
+{
+   result.value() = a.value() * b.value();
+}
+template <class A>
+inline void eval_multiply(float128_backend& result, const float128_backend& a, const A& b)
+{
+   result.value() = a.value() * b;
+}
+inline void eval_divide(float128_backend& result, const float128_backend& a, const float128_backend& b)
+{
+   result.value() = a.value() / b.value();
+}
+
+template <class R>
+inline void eval_convert_to(R* result, const float128_backend& val)
+{
+   *result = static_cast<R>(val.value());
+}
+
+inline void eval_frexp(float128_backend& result, const float128_backend& arg, int* exp)
+{
+   result.value() = frexpq(arg.value(), exp);
+}
+
+inline void eval_ldexp(float128_backend& result, const float128_backend& arg, int exp)
+{
+   result.value() = ldexpq(arg.value(), exp);
+}
+
+inline void eval_floor(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = floorq(arg.value());
+}
+inline void eval_ceil(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = ceilq(arg.value());
+}
+inline void eval_sqrt(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = sqrtq(arg.value());
+}
+inline int eval_fpclassify(const float128_backend& arg)
+{
+   return isnanq(arg.value()) ? FP_NAN : isinfq(arg.value()) ? FP_INFINITE : arg.value() == 0 ? FP_ZERO : FP_NORMAL;
+}
+
+inline void eval_increment(float128_backend& arg)
+{
+   ++arg.value();
+}
+inline void eval_decrement(float128_backend& arg)
+{
+   --arg.value();
+}
+
+/*********************************************************************
+*
+* abs/fabs:
+*
+*********************************************************************/
+
+inline void eval_abs(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = fabsq(arg.value());
+}
+inline void eval_fabs(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = fabsq(arg.value());
+}
+
+/*********************************************************************
+*
+* Floating point functions:
+*
+*********************************************************************/
+
+inline void eval_trunc(float128_backend& result, const float128_backend& arg)
+{
+   if(isnanq(arg.value()) || isinf(arg.value()))
+   {
+      result = boost::math::policies::raise_rounding_error(
+            "boost::multiprecision::trunc<%1%>(%1%)", 0, 
+            number<float128_backend, et_off>(arg), 
+            number<float128_backend, et_off>(arg), 
+            boost::math::policies::policy<>()).backend();
+      return;
+   }
+   result.value() = truncq(arg.value());
+}
+/*
+// 
+// This doesn't actually work... rely on our own default version instead.
+//
+inline void eval_round(float128_backend& result, const float128_backend& arg)
+{
+   if(isnanq(arg.value()) || isinf(arg.value()))
+   {
+      result = boost::math::policies::raise_rounding_error(
+            "boost::multiprecision::trunc<%1%>(%1%)", 0, 
+            number<float128_backend, et_off>(arg), 
+            number<float128_backend, et_off>(arg), 
+            boost::math::policies::policy<>()).backend();
+      return;
+   }
+   result.value() = roundq(arg.value());
+}
+*/
+inline void eval_exp(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = expq(arg.value());
+}
+inline void eval_log(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = logq(arg.value());
+}
+inline void eval_log10(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = log10q(arg.value());
+}
+inline void eval_sin(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = sinq(arg.value());
+}
+inline void eval_cos(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = cosq(arg.value());
+}
+inline void eval_tan(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = tanq(arg.value());
+}
+inline void eval_asin(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = asinq(arg.value());
+}
+inline void eval_acos(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = acosq(arg.value());
+}
+inline void eval_atan(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = atanq(arg.value());
+}
+inline void eval_sinh(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = sinhq(arg.value());
+}
+inline void eval_cosh(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = coshq(arg.value());
+}
+inline void eval_tanh(float128_backend& result, const float128_backend& arg)
+{
+   result.value() = tanhq(arg.value());
+}
+inline void eval_fmod(float128_backend& result, const float128_backend& a, const float128_backend& b)
+{
+   result.value() = fmodq(a.value(), b.value());
+}
+inline void eval_pow(float128_backend& result, const float128_backend& a, const float128_backend& b)
+{
+   result.value() = powq(a.value(), b.value());
+}
+inline void eval_atan2(float128_backend& result, const float128_backend& a, const float128_backend& b)
+{
+   result.value() = atan2q(a.value(), b.value());
+}
+
+} // namespace backends
+
+}} // namespaces
+
+namespace std{
+
+template <boost::multiprecision::expression_template_option ExpressionTemplates>
+class numeric_limits<boost::multiprecision::number<boost::multiprecision::backends::float128_backend, ExpressionTemplates> >
+{
+   typedef boost::multiprecision::number<boost::multiprecision::backends::float128_backend, ExpressionTemplates> number_type;
+public:
+   BOOST_STATIC_CONSTEXPR bool is_specialized = true;
+   static number_type (min)() BOOST_NOEXCEPT { return FLT128_MIN; }
+   static number_type (max)() BOOST_NOEXCEPT { return FLT128_MAX; }
+   static number_type lowest() BOOST_NOEXCEPT { return -(max)(); }
+   BOOST_STATIC_CONSTEXPR int digits = FLT128_MANT_DIG;
+   BOOST_STATIC_CONSTEXPR int digits10 = 33;
+   BOOST_STATIC_CONSTEXPR int max_digits10 = 36;
+   BOOST_STATIC_CONSTEXPR bool is_signed = true;
+   BOOST_STATIC_CONSTEXPR bool is_integer = false;
+   BOOST_STATIC_CONSTEXPR bool is_exact = false;
+   BOOST_STATIC_CONSTEXPR int radix = 2;
+   static number_type epsilon() { return FLT128_EPSILON; }
+   static number_type round_error() { return 0; }
+   BOOST_STATIC_CONSTEXPR int min_exponent = FLT128_MIN_EXP;
+   BOOST_STATIC_CONSTEXPR int min_exponent10 = min_exponent * 301L / 1000L;
+   BOOST_STATIC_CONSTEXPR int max_exponent = FLT128_MAX_EXP;
+   BOOST_STATIC_CONSTEXPR int max_exponent10 = max_exponent * 301L / 1000L;
+   BOOST_STATIC_CONSTEXPR bool has_infinity = true;
+   BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = true;
+   BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false;
+   BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent;
+   BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false;
+   static number_type infinity() { return 1.0q / 0.0q; }
+   static number_type quiet_NaN() { return number_type("nan"); }
+   static number_type signaling_NaN() { return 0; }
+   static number_type denorm_min() { return 0; }
+   BOOST_STATIC_CONSTEXPR bool is_iec559 = true;
+   BOOST_STATIC_CONSTEXPR bool is_bounded = false;
+   BOOST_STATIC_CONSTEXPR bool is_modulo = false;
+   BOOST_STATIC_CONSTEXPR bool traps = false;
+   BOOST_STATIC_CONSTEXPR bool tinyness_before = false;
+   BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero;
+};
+
+} // namespace std
+
+
+#endif
Modified: trunk/libs/multiprecision/config/Jamfile.v2
==============================================================================
--- trunk/libs/multiprecision/config/Jamfile.v2	(original)
+++ trunk/libs/multiprecision/config/Jamfile.v2	2013-04-02 13:26:48 EDT (Tue, 02 Apr 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,11 @@
       <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 ;
 
 explicit has_gmp ;
 explicit has_mpfr ;
 explicit has_mpfi ;
 explicit has_tommath ;
+explicit has_float128 ;
+
Modified: trunk/libs/multiprecision/example/floating_point_examples.cpp
==============================================================================
--- trunk/libs/multiprecision/example/floating_point_examples.cpp	(original)
+++ trunk/libs/multiprecision/example/floating_point_examples.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,6 +3,7 @@
 //  Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
 
+#include <boost/math/constants/constants.hpp>
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #include <boost/math/special_functions/gamma.hpp>
 #include <boost/math/special_functions/bessel.hpp>
Modified: trunk/libs/multiprecision/test/Jamfile.v2
==============================================================================
--- trunk/libs/multiprecision/test/Jamfile.v2	(original)
+++ trunk/libs/multiprecision/test/Jamfile.v2	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -47,6 +47,7 @@
 lib gmp ;
 lib mpfr ;
 lib mpfi ;
+lib quadmath ;
 
 if $(tommath_path)
 {
@@ -111,6 +112,8 @@
 
 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_numeric_limits.cpp
         : # command line
         : # input files
@@ -196,6 +199,15 @@
          [ 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 ;
+
 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 +237,13 @@
            : # 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 test_gmp_conversions.cpp gmp
@@ -332,6 +351,15 @@
          [ 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_int_io.cpp $(TOMMATH)
         : # command line
         : # input files
@@ -467,7 +495,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 ;
 
@@ -545,6 +573,17 @@
             <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
+           : # 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 ;
    }
 }
 
Modified: trunk/libs/multiprecision/test/math/log1p_expm1_test.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/log1p_expm1_test.cpp	(original)
+++ trunk/libs/multiprecision/test/math/log1p_expm1_test.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -8,42 +8,7 @@
 // "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 "setup.hpp"
 #include <boost/math/special_functions/log1p.hpp>
 #include <boost/math/special_functions/expm1.hpp>
 
@@ -128,23 +93,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
 
Modified: trunk/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp	(original)
+++ trunk/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -8,41 +8,8 @@
 // "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>
@@ -108,6 +75,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 +91,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
 }
 
 
Added: trunk/libs/multiprecision/test/math/setup.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/test/math/setup.hpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -0,0 +1,109 @@
+//  Copyright 2013 John Maddock. Distributed under the Boost
+//  Software License, Version 1.0. (See accompanying file
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+#ifndef BOOST_MP_MATH_SETUP_HPP
+#define BOOST_MP_MATH_SETUP_HPP
+
+#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) && !defined(TEST_FLOAT128)
+#  define TEST_MPF_50
+#  define TEST_MPFR_50
+#  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!!")
+#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>
+
+#define MPF_TESTS    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>");
+#define MPF_SMALL_TESTS    /*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>");
+   
+#else
+
+#define MPF_TESTS
+#define MPF_SMALL_TESTS
+
+#endif
+
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+
+#define MPFR_TESTS    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> >");
+
+#else
+
+#define MPFR_TESTS
+
+#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>
+
+#define CPP_DEC_FLOAT_TESTS    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> > >");
+
+#else
+
+#define CPP_DEC_FLOAT_TESTS
+
+#endif
+
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+
+#define FLOAT128_TESTS test(float128(), "float128");
+
+#else
+
+#define FLOAT128_TESTS
+
+#endif
+
+#define BOOST_TEST_MAIN
+#include <boost/test/unit_test.hpp>
+#include <boost/test/floating_point_comparison.hpp>
+
+#endif
+
+#define ALL_TESTS \
+ MPF_TESTS\
+ MPFR_TESTS\
+ CPP_DEC_FLOAT_TESTS\
+ FLOAT128_TESTS
+
+#define ALL_SMALL_TESTS\
+ MPF_SMALL_TESTS\
+ MPFR_TESTS\
+ CPP_DEC_FLOAT_TESTS\
+ FLOAT128_TESTS
+
Modified: trunk/libs/multiprecision/test/math/test_bessel_i.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_bessel_i.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_bessel_i.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -8,38 +8,7 @@
 // "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))
 
@@ -74,6 +43,12 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_bessel(t, p);
+}
+
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -86,25 +61,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   // We have accuracy issues with gmp_float<18> - maybe in std::exp??  Disabled for now.
-   //test_bessel(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_bessel(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_bessel(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_bessel(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_bessel(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_bessel(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_bessel(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_bessel(number<cpp_dec_float<8> >(),  "number<cpp_dec_float<8> >");
-   test_bessel(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_SMALL_TESTS
 }
 
 
Modified: trunk/libs/multiprecision/test/math/test_bessel_j.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_bessel_j.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_bessel_j.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -8,39 +8,7 @@
 // "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>
@@ -117,6 +85,12 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_bessel(t, p);
+}
+
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -128,24 +102,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   // We have accuracy issues with gmp_float<18> - maybe in std::exp??  Disabled for now.
-   //test_bessel(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_bessel(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_bessel(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_bessel(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_bessel(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_bessel(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_bessel(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_bessel(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
 
Modified: trunk/libs/multiprecision/test/math/test_bessel_k.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_bessel_k.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_bessel_k.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -8,40 +8,7 @@
 // "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>
@@ -90,6 +57,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 +73,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   // We have accuracy issues with gmp_float<18> - maybe in std::exp??  Disabled for now.
-   test_bessel(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_bessel(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_bessel(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_bessel(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_bessel(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_bessel(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_bessel(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_bessel(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
 
Modified: trunk/libs/multiprecision/test/math/test_bessel_y.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_bessel_y.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_bessel_y.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -8,39 +8,7 @@
 // "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>
@@ -116,6 +84,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_bessel(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -127,24 +100,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough:
-   //test_bessel(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_bessel(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_bessel(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_bessel(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_bessel(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_bessel(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_bessel(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_bessel(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_SMALL_TESTS
 }
 
 
Modified: trunk/libs/multiprecision/test/math/test_beta.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_beta.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_beta.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -8,39 +8,7 @@
 // "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>
@@ -102,6 +70,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_beta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -113,24 +86,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough:
-   test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
 
Modified: trunk/libs/multiprecision/test/math/test_binomial_coeff.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_binomial_coeff.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_binomial_coeff.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -8,39 +8,7 @@
 // "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>
@@ -81,6 +49,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_binomial(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -92,24 +65,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough:
-   test_binomial(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_binomial(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_binomial(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_binomial(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_binomial(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_binomial(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_binomial(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_binomial(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_binomial(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_binomial(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
 
Modified: trunk/libs/multiprecision/test/math/test_carlson.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_carlson.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_carlson.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -73,6 +41,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 +57,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough:
-   test_spots(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_spots(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_spots(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_spots(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_spots(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_spots(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_spots(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_spots(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
 
Modified: trunk/libs/multiprecision/test/math/test_cbrt.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_cbrt.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_cbrt.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -63,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_cbrt(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -74,23 +47,7 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_cbrt(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_cbrt(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_cbrt(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_cbrt(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_cbrt(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_cbrt(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_cbrt(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_cbrt(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_cbrt(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_cbrt(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
 
Modified: trunk/libs/multiprecision/test/math/test_digamma.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_digamma.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_digamma.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -77,6 +45,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_digamma(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -88,22 +61,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_digamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_digamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_digamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_digamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_digamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_digamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_digamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_digamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_digamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_digamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_ellint_1.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_ellint_1.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_ellint_1.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -70,6 +38,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_spots(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -81,22 +54,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_spots(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_spots(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_spots(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_spots(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_spots(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_spots(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_spots(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_spots(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_ellint_2.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_ellint_2.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_ellint_2.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -63,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_spots(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -74,22 +47,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_spots(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_spots(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_spots(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_spots(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_spots(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_spots(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_spots(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_spots(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_ellint_3.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_ellint_3.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_ellint_3.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -84,6 +52,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 +68,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_spots(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_spots(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_spots(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_spots(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_spots(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_spots(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_spots(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_spots(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_erf.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_erf.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_erf.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -84,6 +52,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 +69,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_erf(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_erf(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_erf(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_erf(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_erf(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_erf(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_erf(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_erf(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_erf(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_erf(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_expint.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_expint.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_expint.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -84,6 +52,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 +68,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_expint(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_expint(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_expint(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_expint(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_expint(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_expint(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_expint(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_expint(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_expint(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_expint(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_gamma.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_gamma.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_gamma.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -98,6 +66,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 +82,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_gamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_gamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_gamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_gamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_gamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_gamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_gamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_gamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_hermite.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_hermite.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_hermite.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -63,6 +31,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 +47,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_hermite(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_hermite(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_hermite(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_hermite(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_hermite(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_hermite(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_hermite(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_hermite(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_hermite(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_hermite(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_ibeta.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_ibeta.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_ibeta.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,40 +3,7 @@
 //  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
 
@@ -94,6 +61,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 +78,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_ibeta_2.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_ibeta_2.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_ibeta_2.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,40 +3,7 @@
 //  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
 
@@ -94,6 +61,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 +77,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_ibeta_3.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_ibeta_3.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_ibeta_3.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,40 +3,7 @@
 //  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
 
@@ -80,6 +47,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_beta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -91,22 +63,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_ibeta_4.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_ibeta_4.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_ibeta_4.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,40 +3,7 @@
 //  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
 
@@ -87,6 +54,12 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_beta(t, p);
+}
+
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -98,22 +71,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_ibeta_inv_1.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_ibeta_inv_1.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_ibeta_inv_1.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,40 +3,7 @@
 //  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
 
@@ -73,6 +40,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_beta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -84,22 +56,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   //test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_SMALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -66,6 +34,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_beta(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -77,22 +50,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   //test_beta(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_beta(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_beta(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_beta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_beta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_beta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_beta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_beta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_igamma.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_igamma.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_igamma.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,40 +3,7 @@
 //  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>
@@ -70,6 +37,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_gamma(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -81,22 +53,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_gamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_gamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_gamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_gamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_gamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_gamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_gamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_gamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_igamma_inv.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_igamma_inv.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_igamma_inv.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,40 +3,7 @@
 //  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
 
@@ -85,6 +52,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_gamma(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -96,22 +68,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_gamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_gamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_gamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_gamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_gamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_gamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_gamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_gamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_igamma_inva.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_igamma_inva.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_igamma_inva.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,40 +3,7 @@
 //  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
 
@@ -64,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_gamma(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -75,22 +47,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_gamma(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_gamma(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_gamma(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_gamma(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_gamma(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_gamma(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_gamma(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_gamma(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_laguerre.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_laguerre.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_laguerre.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -63,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_laguerre(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -74,22 +47,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_laguerre(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_laguerre(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_laguerre(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_laguerre(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_laguerre(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_laguerre(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_laguerre(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_laguerre(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_laguerre(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_laguerre(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_legendre.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_legendre.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_legendre.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -63,6 +31,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_legendre_p(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -74,22 +47,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_legendre_p(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_legendre_p(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_legendre_p(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_legendre_p(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_legendre_p(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_legendre_p(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_legendre_p(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_legendre_p(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_legendre_p(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_legendre_p(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_tgamma_ratio.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_tgamma_ratio.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_tgamma_ratio.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -77,6 +45,11 @@
       << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
 }
 
+template <class T>
+void test(T t, const char* p)
+{
+   test_tgamma_ratio(t, p);
+}
 
 BOOST_AUTO_TEST_CASE( test_main )
 {
@@ -88,22 +61,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_tgamma_ratio(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_tgamma_ratio(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_tgamma_ratio(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_tgamma_ratio(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_tgamma_ratio(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_tgamma_ratio(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_tgamma_ratio(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_tgamma_ratio(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_tgamma_ratio(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_tgamma_ratio(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/math/test_zeta.cpp
==============================================================================
--- trunk/libs/multiprecision/test/math/test_zeta.cpp	(original)
+++ trunk/libs/multiprecision/test/math/test_zeta.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -3,39 +3,7 @@
 //  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
 
@@ -70,6 +38,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 +55,6 @@
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
    //
-#ifdef TEST_MPF_50
-   test_zeta(number<gmp_float<18> >(), "number<gmp_float<18> >");
-   test_zeta(number<gmp_float<30> >(), "number<gmp_float<30> >");
-   test_zeta(number<gmp_float<35> >(), "number<gmp_float<35> >");
-   // there should be at least one test with expression templates off:
-   test_zeta(number<gmp_float<35>, et_off>(), "number<gmp_float<35>, et_off>");
-#endif
-#ifdef TEST_MPFR_50
-   test_zeta(number<mpfr_float_backend<18> >(), "number<mpfr_float_backend<18> >");
-   test_zeta(number<mpfr_float_backend<30> >(), "number<mpfr_float_backend<30> >");
-   test_zeta(number<mpfr_float_backend<35> >(), "number<mpfr_float_backend<35> >");
-#endif
-#ifdef TEST_CPP_DEC_FLOAT
-   test_zeta(number<cpp_dec_float<9> >(),  "number<cpp_dec_float<9> >");
-   test_zeta(number<cpp_dec_float<18> >(), "number<cpp_dec_float<18> >");
-   test_zeta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
-   test_zeta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
-#endif
+   ALL_TESTS
 }
 
Modified: trunk/libs/multiprecision/test/test_acos.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_acos.cpp	(original)
+++ trunk/libs/multiprecision/test/test_acos.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 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();
 }
 
Added: trunk/libs/multiprecision/test/test_arithmetic_float_128.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/test/test_arithmetic_float_128.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -0,0 +1,19 @@
+///////////////////////////////////////////////////////////////
+//  Copyright 2012 John Maddock. Distributed under the Boost
+//  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
+
+#include <boost/multiprecision/float128.hpp>
+
+#include "test_arithmetic.hpp"
+
+int main()
+{
+   test<boost::multiprecision::float128>();
+   return 0;
+}
+
Modified: trunk/libs/multiprecision/test/test_asin.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_asin.cpp	(original)
+++ trunk/libs/multiprecision/test/test_asin.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 //#  define TEST_MPF
 #  define TEST_BACKEND
 #  define TEST_CPP_DEC_FLOAT
 #  define TEST_MPFI_50
+#  define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -122,6 +126,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_atan.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_atan.cpp	(original)
+++ trunk/libs/multiprecision/test/test_atan.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 //#  define TEST_MPF
 #  define TEST_BACKEND
 #  define TEST_CPP_DEC_FLOAT
 #  define TEST_MPFI_50
+#  define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifdef BOOST_MSVC
 #pragma warning(disable:4127)
@@ -276,6 +280,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_cos.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_cos.cpp	(original)
+++ trunk/libs/multiprecision/test/test_cos.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 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()
@@ -319,6 +323,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_cosh.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_cosh.cpp	(original)
+++ trunk/libs/multiprecision/test/test_cosh.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 //#  define TEST_MPF
 #  define TEST_BACKEND
 #  define TEST_CPP_DEC_FLOAT
 #  define TEST_MPFI_50
+#  define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -161,6 +165,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_exp.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_exp.cpp	(original)
+++ trunk/libs/multiprecision/test/test_exp.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 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()
@@ -204,6 +210,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_float_io.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_float_io.cpp	(original)
+++ trunk/libs/multiprecision/test/test_float_io.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 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>
@@ -316,6 +321,9 @@
    test_round_trip<boost::multiprecision::mpf_float_100>();
    */
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_fpclassify.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_fpclassify.cpp	(original)
+++ trunk/libs/multiprecision/test/test_fpclassify.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -14,12 +14,13 @@
 #include <boost/math/special_functions/fpclassify.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 #  define TEST_MPFR_50
 #  define TEST_MPFI_50
 #  define TEST_BACKEND
 #  define TEST_CPP_DEC_FLOAT
+#  define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -45,6 +46,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifdef _MSC_VER
 #pragma warning(disable: 4127) //  conditional expression is constant
@@ -324,6 +328,9 @@
 #ifdef TEST_BACKEND
    test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_log.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_log.cpp	(original)
+++ trunk/libs/multiprecision/test/test_log.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 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()
@@ -233,6 +236,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_numeric_limits.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_numeric_limits.cpp	(original)
+++ trunk/libs/multiprecision/test/test_numeric_limits.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -11,7 +11,7 @@
 
 #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \
    !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && \
-   !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) && !defined(TEST_MPFI_50)
+   !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) && !defined(TEST_MPFI_50) &&!defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 #  define TEST_MPF
 #  define TEST_BACKEND
@@ -23,6 +23,7 @@
 #  define TEST_TOMMATH
 #  define TEST_CPP_INT
 #  define TEST_MPFI_50
+#  define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -54,6 +55,9 @@
 #ifdef TEST_CPP_INT
 #include <boost/multiprecision/cpp_int.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifdef BOOST_MSVC
 #pragma warning(disable:4127)
@@ -254,6 +258,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<200, 200, boost::multiprecision::unsigned_magnitude, boost::multiprecision::checked, void> > >();
    test<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<70, 70, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> > >();
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_pow.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_pow.cpp	(original)
+++ trunk/libs/multiprecision/test/test_pow.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -16,7 +16,7 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 //#  define TEST_MPF
 #  define TEST_BACKEND
@@ -48,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -607,6 +610,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_round.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_round.cpp	(original)
+++ trunk/libs/multiprecision/test/test_round.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -15,12 +15,13 @@
 #include <boost/random/mersenne_twister.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 #  define TEST_MPFR_50
 #  define TEST_MPFI_50
 #  define TEST_BACKEND
 #  define TEST_CPP_DEC_FLOAT
+#  define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -46,6 +47,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifdef BOOST_MSVC
 #pragma warning(disable:4127)
@@ -433,10 +437,10 @@
 #ifdef TEST_BACKEND
    test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
 
-
-
-
Modified: trunk/libs/multiprecision/test/test_sin.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_sin.cpp	(original)
+++ trunk/libs/multiprecision/test/test_sin.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 #  define TEST_MPFR_50
 #  define TEST_MPFI_50
 #  define TEST_BACKEND
 #  define TEST_CPP_DEC_FLOAT
+#  define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -316,6 +320,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_sinh.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_sinh.cpp	(original)
+++ trunk/libs/multiprecision/test/test_sinh.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 #  define TEST_MPFR_50
 #  define TEST_MPFI_50
 #  define TEST_BACKEND
 #  define TEST_CPP_DEC_FLOAT
+#  define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -240,6 +244,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_sqrt.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_sqrt.cpp	(original)
+++ trunk/libs/multiprecision/test/test_sqrt.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 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()
@@ -212,6 +216,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<1000> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_tan.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_tan.cpp	(original)
+++ trunk/libs/multiprecision/test/test_tan.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 2013)
@@ -16,12 +16,13 @@
 #include <boost/array.hpp>
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128)
 #  define TEST_MPF_50
 #  define TEST_MPFI_50
 #  define TEST_BACKEND
 #  define TEST_CPP_DEC_FLOAT
 #  define TEST_MPFR_50
+#  define TEST_FLOAT128
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -47,6 +48,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 template <class T>
 void test()
@@ -613,6 +617,9 @@
    test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
 #endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
    return boost::report_errors();
 }
 
Modified: trunk/libs/multiprecision/test/test_tanh.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_tanh.cpp	(original)
+++ trunk/libs/multiprecision/test/test_tanh.cpp	2013-04-02 13:26:48 EDT (Tue, 02 Apr 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();
 }