$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r76369 - in branches/release: boost/detail boost/math boost/math/special_functions boost/math/special_functions/detail libs/math libs/math/doc/sf_and_dist libs/math/doc/sf_and_dist/html libs/math/doc/sf_and_dist/html/index libs/math/doc/sf_and_dist/html/math_toolkit/main_overview libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas libs/math/test
From: john_at_[hidden]
Date: 2012-01-08 08:10:36
Author: johnmaddock
Date: 2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
New Revision: 76369
URL: http://svn.boost.org/trac/boost/changeset/76369
Log:
Merge Boost.Math changes from Trunk:  mostly refactored test cases for shorter compile times.
Added:
   branches/release/libs/math/test/pch_light.hpp
      - copied unchanged from r76365, /trunk/libs/math/test/pch_light.hpp
Properties modified: 
   branches/release/boost/detail/fenv.hpp   (contents, props changed)
   branches/release/boost/math/   (props changed)
   branches/release/libs/math/   (props changed)
   branches/release/libs/math/doc/sf_and_dist/faq.qbk   (props changed)
   branches/release/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/faq.html   (props changed)
   branches/release/libs/math/test/s_.ipp   (props changed)
Text files modified: 
   branches/release/boost/detail/fenv.hpp                                               |     5                                         
   branches/release/boost/math/special_functions/beta.hpp                               |    42 ++--                                    
   branches/release/boost/math/special_functions/detail/lgamma_small.hpp                |    30 +-                                      
   branches/release/boost/math/special_functions/erf.hpp                                |     6                                         
   branches/release/boost/math/special_functions/gamma.hpp                              |    44 ++--                                    
   branches/release/boost/math/special_functions/zeta.hpp                               |    19 -                                       
   branches/release/libs/math/doc/sf_and_dist/html/index.html                           |     2                                         
   branches/release/libs/math/doc/sf_and_dist/html/index/s12.html                       |     2                                         
   branches/release/libs/math/doc/sf_and_dist/html/index/s13.html                       |     2                                         
   branches/release/libs/math/doc/sf_and_dist/html/index/s14.html                       |     2                                         
   branches/release/libs/math/doc/sf_and_dist/html/index/s15.html                       |     2                                         
   branches/release/libs/math/doc/sf_and_dist/html/index/s16.html                       |     2                                         
   branches/release/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html |     9 -                                       
   branches/release/libs/math/doc/sf_and_dist/zeta.qbk                                  |     6                                         
   branches/release/libs/math/test/Jamfile.v2                                           |   103 +++++-----                              
   branches/release/libs/math/test/hypot_test.cpp                                       |     4                                         
   branches/release/libs/math/test/log1p_expm1_test.cpp                                 |     5                                         
   branches/release/libs/math/test/powm1_sqrtp1m1_test.cpp                              |     5                                         
   branches/release/libs/math/test/test_bessel_i.cpp                                    |     2                                         
   branches/release/libs/math/test/test_bessel_i.hpp                                    |     3                                         
   branches/release/libs/math/test/test_bessel_j.cpp                                    |     2                                         
   branches/release/libs/math/test/test_bessel_j.hpp                                    |     3                                         
   branches/release/libs/math/test/test_bessel_k.cpp                                    |     2                                         
   branches/release/libs/math/test/test_bessel_k.hpp                                    |     3                                         
   branches/release/libs/math/test/test_bessel_y.cpp                                    |     2                                         
   branches/release/libs/math/test/test_bessel_y.hpp                                    |     3                                         
   branches/release/libs/math/test/test_beta.cpp                                        |     2                                         
   branches/release/libs/math/test/test_beta.hpp                                        |     2                                         
   branches/release/libs/math/test/test_carlson.cpp                                     |     2                                         
   branches/release/libs/math/test/test_carlson.hpp                                     |     5                                         
   branches/release/libs/math/test/test_cbrt.cpp                                        |     2                                         
   branches/release/libs/math/test/test_cbrt.hpp                                        |     2                                         
   branches/release/libs/math/test/test_digamma.cpp                                     |     2                                         
   branches/release/libs/math/test/test_digamma.hpp                                     |     2                                         
   branches/release/libs/math/test/test_ellint_1.cpp                                    |     2                                         
   branches/release/libs/math/test/test_ellint_1.hpp                                    |     2                                         
   branches/release/libs/math/test/test_ellint_2.cpp                                    |     2                                         
   branches/release/libs/math/test/test_ellint_2.hpp                                    |     2                                         
   branches/release/libs/math/test/test_ellint_3.cpp                                    |     2                                         
   branches/release/libs/math/test/test_ellint_3.hpp                                    |     2                                         
   branches/release/libs/math/test/test_erf.cpp                                         |     2                                         
   branches/release/libs/math/test/test_erf.hpp                                         |     2                                         
   branches/release/libs/math/test/test_expint.cpp                                      |     2                                         
   branches/release/libs/math/test/test_expint.hpp                                      |     3                                         
   branches/release/libs/math/test/test_gamma.cpp                                       |     2                                         
   branches/release/libs/math/test/test_gamma.hpp                                       |     2                                         
   branches/release/libs/math/test/test_hermite.cpp                                     |     2                                         
   branches/release/libs/math/test/test_hermite.hpp                                     |     2                                         
   branches/release/libs/math/test/test_ibeta.cpp                                       |     2                                         
   branches/release/libs/math/test/test_ibeta.hpp                                       |     2                                         
   branches/release/libs/math/test/test_ibeta_inv.cpp                                   |     2                                         
   branches/release/libs/math/test/test_ibeta_inv.hpp                                   |     2                                         
   branches/release/libs/math/test/test_ibeta_inv_ab.cpp                                |     2                                         
   branches/release/libs/math/test/test_ibeta_inv_ab.hpp                                |     2                                         
   branches/release/libs/math/test/test_igamma.cpp                                      |     2                                         
   branches/release/libs/math/test/test_igamma.hpp                                      |     2                                         
   branches/release/libs/math/test/test_igamma_inv.cpp                                  |     2                                         
   branches/release/libs/math/test/test_igamma_inv.hpp                                  |     2                                         
   branches/release/libs/math/test/test_igamma_inva.cpp                                 |     2                                         
   branches/release/libs/math/test/test_igamma_inva.hpp                                 |     2                                         
   branches/release/libs/math/test/test_instances.hpp                                   |   359 +++++++++++++++++++++++++++++++++++++++ 
   branches/release/libs/math/test/test_laguerre.cpp                                    |     2                                         
   branches/release/libs/math/test/test_laguerre.hpp                                    |     2                                         
   branches/release/libs/math/test/test_legendre.cpp                                    |     2                                         
   branches/release/libs/math/test/test_legendre.hpp                                    |     2                                         
   branches/release/libs/math/test/test_spherical_harmonic.cpp                          |     4                                         
   branches/release/libs/math/test/test_zeta.cpp                                        |     1                                         
   67 files changed, 542 insertions(+), 212 deletions(-)
Modified: branches/release/boost/detail/fenv.hpp
==============================================================================
--- branches/release/boost/detail/fenv.hpp	(original)
+++ branches/release/boost/detail/fenv.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -16,9 +16,10 @@
 
 /* If we're using clang + glibc, we have to get hacky. 
  * See http://llvm.org/bugs/show_bug.cgi?id=6907 */
-#if defined(__clang__)       &&                       \
+#if defined(__clang__)       &&  (__clang_major__ < 3) &&    \
     defined(__GNU_LIBRARY__) && /* up to version 5 */ \
-    defined(__GLIBC__)          /* version 6 + */
+    defined(__GLIBC__) &&         /* version 6 + */ \
+    !defined(_FENV_H)
   #define _FENV_H
 
   #include <features.h>
Modified: branches/release/boost/math/special_functions/beta.hpp
==============================================================================
--- branches/release/boost/math/special_functions/beta.hpp	(original)
+++ branches/release/boost/math/special_functions/beta.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -29,8 +29,8 @@
 //
 // Implementation of Beta(a,b) using the Lanczos approximation:
 //
-template <class T, class L, class Policy>
-T beta_imp(T a, T b, const L&, const Policy& pol)
+template <class T, class Lanczos, class Policy>
+T beta_imp(T a, T b, const Lanczos&, const Policy& pol)
 {
    BOOST_MATH_STD_USING  // for ADL of std names
 
@@ -81,10 +81,10 @@
       std::swap(a, b);
 
    // Lanczos calculation:
-   T agh = a + L::g() - T(0.5);
-   T bgh = b + L::g() - T(0.5);
-   T cgh = c + L::g() - T(0.5);
-   result = L::lanczos_sum_expG_scaled(a) * L::lanczos_sum_expG_scaled(b) / L::lanczos_sum_expG_scaled(c);
+   T agh = a + Lanczos::g() - T(0.5);
+   T bgh = b + Lanczos::g() - T(0.5);
+   T cgh = c + Lanczos::g() - T(0.5);
+   result = Lanczos::lanczos_sum_expG_scaled(a) * Lanczos::lanczos_sum_expG_scaled(b) / Lanczos::lanczos_sum_expG_scaled(c);
    T ambh = a - T(0.5) - b;
    if((fabs(b * ambh) < (cgh * 100)) && (a > 100))
    {
@@ -107,7 +107,7 @@
    result *= prefix;
 
    return result;
-} // template <class T, class L> beta_imp(T a, T b, const L&)
+} // template <class T, class Lanczos> beta_imp(T a, T b, const Lanczos&)
 
 //
 // Generic implementation of Beta(a,b) without Lanczos approximation support
@@ -191,12 +191,12 @@
 // powers are *hard* though, and using logarithms just leads to
 // horrendous cancellation errors.
 //
-template <class T, class L, class Policy>
+template <class T, class Lanczos, class Policy>
 T ibeta_power_terms(T a,
                         T b,
                         T x,
                         T y,
-                        const L&,
+                        const Lanczos&,
                         bool normalised,
                         const Policy& pol)
 {
@@ -214,10 +214,10 @@
    T c = a + b;
 
    // combine power terms with Lanczos approximation:
-   T agh = a + L::g() - T(0.5);
-   T bgh = b + L::g() - T(0.5);
-   T cgh = c + L::g() - T(0.5);
-   result = L::lanczos_sum_expG_scaled(c) / (L::lanczos_sum_expG_scaled(a) * L::lanczos_sum_expG_scaled(b));
+   T agh = a + Lanczos::g() - T(0.5);
+   T bgh = b + Lanczos::g() - T(0.5);
+   T cgh = c + Lanczos::g() - T(0.5);
+   result = Lanczos::lanczos_sum_expG_scaled(c) / (Lanczos::lanczos_sum_expG_scaled(a) * Lanczos::lanczos_sum_expG_scaled(b));
 
    // l1 and l2 are the base of the exponents minus one:
    T l1 = (x * b - y * agh) / agh;
@@ -465,8 +465,8 @@
    int n;
 };
 
-template <class T, class L, class Policy>
-T ibeta_series(T a, T b, T x, T s0, const L&, bool normalised, T* p_derivative, T y, const Policy& pol)
+template <class T, class Lanczos, class Policy>
+T ibeta_series(T a, T b, T x, T s0, const Lanczos&, bool normalised, T* p_derivative, T y, const Policy& pol)
 {
    BOOST_MATH_STD_USING
 
@@ -479,10 +479,10 @@
       T c = a + b;
 
       // incomplete beta power term, combined with the Lanczos approximation:
-      T agh = a + L::g() - T(0.5);
-      T bgh = b + L::g() - T(0.5);
-      T cgh = c + L::g() - T(0.5);
-      result = L::lanczos_sum_expG_scaled(c) / (L::lanczos_sum_expG_scaled(a) * L::lanczos_sum_expG_scaled(b));
+      T agh = a + Lanczos::g() - T(0.5);
+      T bgh = b + Lanczos::g() - T(0.5);
+      T cgh = c + Lanczos::g() - T(0.5);
+      result = Lanczos::lanczos_sum_expG_scaled(c) / (Lanczos::lanczos_sum_expG_scaled(a) * Lanczos::lanczos_sum_expG_scaled(b));
       if(a * b < bgh * 10)
          result *= exp((b - 0.5f) * boost::math::log1p(a / bgh, pol));
       else
@@ -836,7 +836,7 @@
       }
    }
    return sum;
-} // template <class T, class L>T beta_small_b_large_a_series(T a, T b, T x, T y, T s0, T mult, const L& l, bool normalised)
+} // template <class T, class Lanczos>T beta_small_b_large_a_series(T a, T b, T x, T y, T s0, T mult, const Lanczos& l, bool normalised)
 
 //
 // For integer arguments we can relate the incomplete beta to the
@@ -1220,7 +1220,7 @@
       }
    }
    return invert ? (normalised ? 1 : boost::math::beta(a, b, pol)) - fract : fract;
-} // template <class T, class L>T ibeta_imp(T a, T b, T x, const L& l, bool inv, bool normalised)
+} // template <class T, class Lanczos>T ibeta_imp(T a, T b, T x, const Lanczos& l, bool inv, bool normalised)
 
 template <class T, class Policy>
 inline T ibeta_imp(T a, T b, T x, const Policy& pol, bool inv, bool normalised)
Modified: branches/release/boost/math/special_functions/detail/lgamma_small.hpp
==============================================================================
--- branches/release/boost/math/special_functions/detail/lgamma_small.hpp	(original)
+++ branches/release/boost/math/special_functions/detail/lgamma_small.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -17,13 +17,13 @@
 //
 // lgamma for small arguments:
 //
-template <class T, class Policy, class L>
-T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<64>&, const Policy& /* l */, const L&)
+template <class T, class Policy, class Lanczos>
+T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<64>&, const Policy& /* l */, const Lanczos&)
 {
    // This version uses rational approximations for small
    // values of z accurate enough for 64-bit mantissas
    // (80-bit long doubles), works well for 53-bit doubles as well.
-   // L is only used to select the Lanczos function.
+   // Lanczos is only used to select the Lanczos function.
 
    BOOST_MATH_STD_USING  // for ADL of std names
    T result = 0;
@@ -206,8 +206,8 @@
    }
    return result;
 }
-template <class T, class Policy, class L>
-T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<113>&, const Policy& /* l */, const L&)
+template <class T, class Policy, class Lanczos>
+T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<113>&, const Policy& /* l */, const Lanczos&)
 {
    //
    // This version uses rational approximations for small
@@ -463,8 +463,8 @@
    BOOST_MATH_INSTRUMENT_CODE(result);
    return result;
 }
-template <class T, class Policy, class L>
-T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<0>&, const Policy& pol, const L&)
+template <class T, class Policy, class Lanczos>
+T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<0>&, const Policy& pol, const Lanczos&)
 {
    //
    // No rational approximations are available because either
@@ -482,28 +482,28 @@
    else if(z < 0.5)
    {
       // taking the log of tgamma reduces the error, no danger of overflow here:
-      result = log(gamma_imp(z, pol, L()));
+      result = log(gamma_imp(z, pol, Lanczos()));
    }
    else if(z >= 3)
    {
       // taking the log of tgamma reduces the error, no danger of overflow here:
-      result = log(gamma_imp(z, pol, L()));
+      result = log(gamma_imp(z, pol, Lanczos()));
    }
    else if(z >= 1.5)
    {
       // special case near 2:
       T dz = zm2;
-      result = dz * log((z + L::g() - T(0.5)) / boost::math::constants::e<T>());
-      result += boost::math::log1p(dz / (L::g() + T(1.5)), pol) * T(1.5);
-      result += boost::math::log1p(L::lanczos_sum_near_2(dz), pol);
+      result = dz * log((z + Lanczos::g() - T(0.5)) / boost::math::constants::e<T>());
+      result += boost::math::log1p(dz / (Lanczos::g() + T(1.5)), pol) * T(1.5);
+      result += boost::math::log1p(Lanczos::lanczos_sum_near_2(dz), pol);
    }
    else
    {
       // special case near 1:
       T dz = zm1;
-      result = dz * log((z + L::g() - T(0.5)) / boost::math::constants::e<T>());
-      result += boost::math::log1p(dz / (L::g() + T(0.5)), pol) / 2;
-      result += boost::math::log1p(L::lanczos_sum_near_1(dz), pol);
+      result = dz * log((z + Lanczos::g() - T(0.5)) / boost::math::constants::e<T>());
+      result += boost::math::log1p(dz / (Lanczos::g() + T(0.5)), pol) / 2;
+      result += boost::math::log1p(Lanczos::lanczos_sum_near_1(dz), pol);
    }
    return result;
 }
Modified: branches/release/boost/math/special_functions/erf.hpp
==============================================================================
--- branches/release/boost/math/special_functions/erf.hpp	(original)
+++ branches/release/boost/math/special_functions/erf.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -365,7 +365,7 @@
    }
 
    return result;
-} // template <class T, class L>T erf_imp(T z, bool invert, const L& l, const mpl::int_<53>& t)
+} // template <class T, class Lanczos>T erf_imp(T z, bool invert, const Lanczos& l, const mpl::int_<53>& t)
 
 
 template <class T, class Policy>
@@ -571,7 +571,7 @@
    }
 
    return result;
-} // template <class T, class L>T erf_imp(T z, bool invert, const L& l, const mpl::int_<64>& t)
+} // template <class T, class Lanczos>T erf_imp(T z, bool invert, const Lanczos& l, const mpl::int_<64>& t)
 
 
 template <class T, class Policy>
@@ -976,7 +976,7 @@
    }
 
    return result;
-} // template <class T, class L>T erf_imp(T z, bool invert, const L& l, const mpl::int_<113>& t)
+} // template <class T, class Lanczos>T erf_imp(T z, bool invert, const Lanczos& l, const mpl::int_<113>& t)
 
 } // namespace detail
 
Modified: branches/release/boost/math/special_functions/gamma.hpp
==============================================================================
--- branches/release/boost/math/special_functions/gamma.hpp	(original)
+++ branches/release/boost/math/special_functions/gamma.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -127,8 +127,8 @@
 //
 // tgamma(z), with Lanczos support:
 //
-template <class T, class Policy, class L>
-T gamma_imp(T z, const Policy& pol, const L& l)
+template <class T, class Policy, class Lanczos>
+T gamma_imp(T z, const Policy& pol, const Lanczos& l)
 {
    BOOST_MATH_STD_USING
 
@@ -178,13 +178,13 @@
    }
    else
    {
-      result *= L::lanczos_sum(z);
+      result *= Lanczos::lanczos_sum(z);
       BOOST_MATH_INSTRUMENT_VARIABLE(result);
       BOOST_MATH_INSTRUMENT_VARIABLE(tools::log_max_value<T>());
       if(z * log(z) > tools::log_max_value<T>())
       {
          // we're going to overflow unless this is done with care:
-         T zgh = (z + static_cast<T>(L::g()) - boost::math::constants::half<T>());
+         T zgh = (z + static_cast<T>(Lanczos::g()) - boost::math::constants::half<T>());
          BOOST_MATH_INSTRUMENT_VARIABLE(zgh);
          if(log(zgh) * z / 2 > tools::log_max_value<T>())
             return policies::raise_overflow_error<T>(function, "Result of tgamma is too large to represent.", pol);
@@ -199,7 +199,7 @@
       }
       else
       {
-         T zgh = (z + static_cast<T>(L::g()) - boost::math::constants::half<T>());
+         T zgh = (z + static_cast<T>(Lanczos::g()) - boost::math::constants::half<T>());
          BOOST_MATH_INSTRUMENT_VARIABLE(zgh);
          BOOST_MATH_INSTRUMENT_VARIABLE(pow(zgh, z - boost::math::constants::half<T>()));
          BOOST_MATH_INSTRUMENT_VARIABLE(exp(zgh));
@@ -212,8 +212,8 @@
 //
 // lgamma(z) with Lanczos support:
 //
-template <class T, class Policy, class L>
-T lgamma_imp(T z, const Policy& pol, const L& l, int* sign = 0)
+template <class T, class Policy, class Lanczos>
+T lgamma_imp(T z, const Policy& pol, const Lanczos& l, int* sign = 0)
 {
 #ifdef BOOST_MATH_INSTRUMENT
    static bool b = false;
@@ -274,10 +274,10 @@
    else
    {
       // regular evaluation:
-      T zgh = static_cast<T>(z + L::g() - boost::math::constants::half<T>());
+      T zgh = static_cast<T>(z + Lanczos::g() - boost::math::constants::half<T>());
       result = log(zgh) - 1;
       result *= z - 0.5f;
-      result += log(L::lanczos_sum_expG_scaled(z));
+      result += log(Lanczos::lanczos_sum_expG_scaled(z));
    }
 
    if(sign)
@@ -447,8 +447,8 @@
 // This helper calculates tgamma(dz+1)-1 without cancellation errors,
 // used by the upper incomplete gamma with z < 1:
 //
-template <class T, class Policy, class L>
-T tgammap1m1_imp(T dz, Policy const& pol, const L& l)
+template <class T, class Policy, class Lanczos>
+T tgammap1m1_imp(T dz, Policy const& pol, const Lanczos& l)
 {
    BOOST_MATH_STD_USING
 
@@ -460,7 +460,7 @@
          mpl::greater<precision_type, mpl::int_<113> >
       >,
       typename mpl::if_<
-         is_same<L, lanczos::lanczos24m113>,
+         is_same<Lanczos, lanczos::lanczos24m113>,
          mpl::int_<113>,
          mpl::int_<0>
       >::type,
@@ -612,13 +612,13 @@
 // Compute (z^a)(e^-z)/tgamma(a)
 // most if the error occurs in this function:
 //
-template <class T, class Policy, class L>
-T regularised_gamma_prefix(T a, T z, const Policy& pol, const L& l)
+template <class T, class Policy, class Lanczos>
+T regularised_gamma_prefix(T a, T z, const Policy& pol, const Lanczos& l)
 {
    BOOST_MATH_STD_USING
-   T agh = a + static_cast<T>(L::g()) - T(0.5);
+   T agh = a + static_cast<T>(Lanczos::g()) - T(0.5);
    T prefix;
-   T d = ((z - a) - static_cast<T>(L::g()) + T(0.5)) / agh;
+   T d = ((z - a) - static_cast<T>(Lanczos::g()) + T(0.5)) / agh;
 
    if(a < 1)
    {
@@ -646,7 +646,7 @@
    else if((fabs(d*d*a) <= 100) && (a > 150))
    {
       // special case for large a and a ~ z.
-      prefix = a * boost::math::log1pmx(d, pol) + z * static_cast<T>(0.5 - L::g()) / agh;
+      prefix = a * boost::math::log1pmx(d, pol) + z * static_cast<T>(0.5 - Lanczos::g()) / agh;
       prefix = exp(prefix);
    }
    else
@@ -688,7 +688,7 @@
          prefix = pow(z / agh, a) * exp(amz);
       }
    }
-   prefix *= sqrt(agh / boost::math::constants::e<T>()) / L::lanczos_sum_expG_scaled(a);
+   prefix *= sqrt(agh / boost::math::constants::e<T>()) / Lanczos::lanczos_sum_expG_scaled(a);
    return prefix;
 }
 //
@@ -1092,11 +1092,11 @@
 //
 // Ratios of two gamma functions:
 //
-template <class T, class Policy, class L>
-T tgamma_delta_ratio_imp_lanczos(T z, T delta, const Policy& pol, const L&)
+template <class T, class Policy, class Lanczos>
+T tgamma_delta_ratio_imp_lanczos(T z, T delta, const Policy& pol, const Lanczos&)
 {
    BOOST_MATH_STD_USING
-   T zgh = z + L::g() - constants::half<T>();
+   T zgh = z + Lanczos::g() - constants::half<T>();
    T result;
    if(fabs(delta) < 10)
    {
@@ -1107,7 +1107,7 @@
       result = pow(zgh / (zgh + delta), z - constants::half<T>());
    }
    result *= pow(constants::e<T>() / (zgh + delta), delta);
-   result *= L::lanczos_sum(z) / L::lanczos_sum(T(z + delta));
+   result *= Lanczos::lanczos_sum(z) / Lanczos::lanczos_sum(T(z + delta));
    return result;
 }
 //
Modified: branches/release/boost/math/special_functions/zeta.hpp
==============================================================================
--- branches/release/boost/math/special_functions/zeta.hpp	(original)
+++ branches/release/boost/math/special_functions/zeta.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -19,6 +19,12 @@
 
 namespace boost{ namespace math{ namespace detail{
 
+#if 0
+//
+// This code is commented out because we have a better more rapidly converging series
+// now.  Retained for future reference and in case the new code causes any issues down the line....
+//
+
 template <class T, class Policy>
 struct zeta_series_cache_size
 {
@@ -90,12 +96,6 @@
    return sum * 1 / -boost::math::powm1(T(2), sc);
 }
 
-#if 0
-//
-// This code is commented out because we have a better more rapidly converging series
-// now.  Retained for future reference and in case the new code causes any issues down the line....
-//
-
 //
 // Classical p-series:
 //
@@ -158,7 +158,7 @@
       ej_term /= j - n + 1;
       ej_sum += ej_term;
    }
-   return -sum / (two_n * (1 - pow(T(2), sc)));
+   return -sum / (two_n * (-powm1(T(2), sc)));
 }
 
 template <class T, class Policy>
@@ -166,10 +166,7 @@
 {
    BOOST_MATH_STD_USING
    T result;
-   if(fabs(sc) > 0.01f)
-      result = zeta_polynomial_series(s, sc, pol); 
-   else
-      result = detail::zeta_series_imp(s, sc, pol);
+   result = zeta_polynomial_series(s, sc, pol); 
 #if 0
    // Old code archived for future reference:
 
Modified: branches/release/libs/math/doc/sf_and_dist/html/index.html
==============================================================================
--- branches/release/libs/math/doc/sf_and_dist/html/index.html	(original)
+++ branches/release/libs/math/doc/sf_and_dist/html/index.html	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -513,7 +513,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: January 02, 2012 at 11:43:05 GMT</small></p></td>
+<td align="left"><p><small>Last revised: January 07, 2012 at 16:42:37 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
Modified: branches/release/libs/math/doc/sf_and_dist/html/index/s12.html
==============================================================================
--- branches/release/libs/math/doc/sf_and_dist/html/index/s12.html	(original)
+++ branches/release/libs/math/doc/sf_and_dist/html/index/s12.html	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -24,7 +24,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1439950"></a>Function Index</h2></div></div></div>
+<a name="id1501367"></a>Function Index</h2></div></div></div>
 <p><a class="link" href="s12.html#idx_id_0">A</a> <a class="link" href="s12.html#idx_id_1">B</a> <a class="link" href="s12.html#idx_id_2">C</a> <a class="link" href="s12.html#idx_id_3">D</a> <a class="link" href="s12.html#idx_id_4">E</a> <a class="link" href="s12.html#idx_id_5">F</a> <a class="link" href="s12.html#idx_id_6">G</a> <a class="link" href="s12.html#idx_id_7">H</a> <a class="link" href="s12.html#idx_id_8">I</a> <a class="link" href="s12.html#idx_id_9">K</a> <a class="link" href="s12.html#idx_id_10">L</a> <a class="link" href="s12.html#idx_id_11">M</a> <a class="link" href="s12.html#idx_id_12">N</a> <a class="link" href="s12.html#idx_id_14">P</a> <a class="link" href="s12.html#idx_id_15">Q</a> <a class="link" href="s12.html#idx_id_16">R</a> <a class="link" href="s12.html#idx_id_17">S</a> <a class="link" href="s12.html#idx_id_18">T</a> <a class="link" href="s12.html#idx_id_19">U</a> <a class="link" href="s12.html#idx_id_20">V</a> <a class="link" href="s12.html#idx_id_21">W</a> <a class="link" href=
"s12.html#idx_id_22">Z</a></p>
 <div class="variablelist"><dl>
 <dt>
Modified: branches/release/libs/math/doc/sf_and_dist/html/index/s13.html
==============================================================================
--- branches/release/libs/math/doc/sf_and_dist/html/index/s13.html	(original)
+++ branches/release/libs/math/doc/sf_and_dist/html/index/s13.html	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -24,7 +24,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1455854"></a>Class Index</h2></div></div></div>
+<a name="id1517264"></a>Class Index</h2></div></div></div>
 <p><a class="link" href="s13.html#idx_id_24">B</a> <a class="link" href="s13.html#idx_id_25">C</a> <a class="link" href="s13.html#idx_id_26">D</a> <a class="link" href="s13.html#idx_id_27">E</a> <a class="link" href="s13.html#idx_id_28">F</a> <a class="link" href="s13.html#idx_id_29">G</a> <a class="link" href="s13.html#idx_id_30">H</a> <a class="link" href="s13.html#idx_id_31">I</a> <a class="link" href="s13.html#idx_id_33">L</a> <a class="link" href="s13.html#idx_id_34">M</a> <a class="link" href="s13.html#idx_id_35">N</a> <a class="link" href="s13.html#idx_id_37">P</a> <a class="link" href="s13.html#idx_id_39">R</a> <a class="link" href="s13.html#idx_id_40">S</a> <a class="link" href="s13.html#idx_id_41">T</a> <a class="link" href="s13.html#idx_id_42">U</a> <a class="link" href="s13.html#idx_id_44">W</a></p>
 <div class="variablelist"><dl>
 <dt>
Modified: branches/release/libs/math/doc/sf_and_dist/html/index/s14.html
==============================================================================
--- branches/release/libs/math/doc/sf_and_dist/html/index/s14.html	(original)
+++ branches/release/libs/math/doc/sf_and_dist/html/index/s14.html	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -24,7 +24,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1456767"></a>Typedef Index</h2></div></div></div>
+<a name="id1518178"></a>Typedef Index</h2></div></div></div>
 <p><a class="link" href="s14.html#idx_id_46">A</a> <a class="link" href="s14.html#idx_id_47">B</a> <a class="link" href="s14.html#idx_id_48">C</a> <a class="link" href="s14.html#idx_id_49">D</a> <a class="link" href="s14.html#idx_id_50">E</a> <a class="link" href="s14.html#idx_id_51">F</a> <a class="link" href="s14.html#idx_id_52">G</a> <a class="link" href="s14.html#idx_id_53">H</a> <a class="link" href="s14.html#idx_id_54">I</a> <a class="link" href="s14.html#idx_id_56">L</a> <a class="link" href="s14.html#idx_id_58">N</a> <a class="link" href="s14.html#idx_id_59">O</a> <a class="link" href="s14.html#idx_id_60">P</a> <a class="link" href="s14.html#idx_id_62">R</a> <a class="link" href="s14.html#idx_id_63">S</a> <a class="link" href="s14.html#idx_id_64">T</a> <a class="link" href="s14.html#idx_id_65">U</a> <a class="link" href="s14.html#idx_id_66">V</a> <a class="link" href="s14.html#idx_id_67">W</a></p>
 <div class="variablelist"><dl>
 <dt>
Modified: branches/release/libs/math/doc/sf_and_dist/html/index/s15.html
==============================================================================
--- branches/release/libs/math/doc/sf_and_dist/html/index/s15.html	(original)
+++ branches/release/libs/math/doc/sf_and_dist/html/index/s15.html	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -24,7 +24,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1459652"></a>Macro Index</h2></div></div></div>
+<a name="id1521062"></a>Macro Index</h2></div></div></div>
 <p><a class="link" href="s15.html#idx_id_70">B</a> <a class="link" href="s15.html#idx_id_74">F</a></p>
 <div class="variablelist"><dl>
 <dt>
Modified: branches/release/libs/math/doc/sf_and_dist/html/index/s16.html
==============================================================================
--- branches/release/libs/math/doc/sf_and_dist/html/index/s16.html	(original)
+++ branches/release/libs/math/doc/sf_and_dist/html/index/s16.html	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -23,7 +23,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1461088"></a>Index</h2></div></div></div>
+<a name="id1522498"></a>Index</h2></div></div></div>
 <p><a class="link" href="s16.html#idx_id_92">A</a> <a class="link" href="s16.html#idx_id_93">B</a> <a class="link" href="s16.html#idx_id_94">C</a> <a class="link" href="s16.html#idx_id_95">D</a> <a class="link" href="s16.html#idx_id_96">E</a> <a class="link" href="s16.html#idx_id_97">F</a> <a class="link" href="s16.html#idx_id_98">G</a> <a class="link" href="s16.html#idx_id_99">H</a> <a class="link" href="s16.html#idx_id_100">I</a> <a class="link" href="s16.html#idx_id_101">K</a> <a class="link" href="s16.html#idx_id_102">L</a> <a class="link" href="s16.html#idx_id_103">M</a> <a class="link" href="s16.html#idx_id_104">N</a> <a class="link" href="s16.html#idx_id_105">O</a> <a class="link" href="s16.html#idx_id_106">P</a> <a class="link" href="s16.html#idx_id_107">Q</a> <a class="link" href="s16.html#idx_id_108">R</a> <a class="link" href="s16.html#idx_id_109">S</a> <a class="link" href="s16.html#idx_id_110">T</a> <a class="link" href="s16.html#idx_id_111">U</a> <a class="link" href="s16.html#idx_id_112">V</a
> <a class="link" href="s16.html#idx_id_113">W</a> <a class="link" href="s16.html#idx_id_114">Z</a></p>
 <div class="variablelist"><dl>
 <dt>
Modified: branches/release/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html
==============================================================================
--- branches/release/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html	(original)
+++ branches/release/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -260,15 +260,6 @@
           <span class="inlinemediaobject"><img src="../../../../equations/zeta6.png"></span>
         </p>
 <p>
-          except when the argument is close to 1, where the globally convergent series:
-        </p>
-<p>
-          <span class="inlinemediaobject"><img src="../../../../equations/zeta2.png"></span>
-        </p>
-<p>
-          Is used.
-        </p>
-<p>
           When the significand (mantissa) size is recognised (currently for 53, 64
           and 113-bit reals, plus single-precision 24-bit handled via promotion to
           double) then a series of rational approximations <a class="link" href="../../backgrounders/implementation.html#math_toolkit.backgrounders.implementation.rational_approximations_used">devised
Modified: branches/release/libs/math/doc/sf_and_dist/zeta.qbk
==============================================================================
--- branches/release/libs/math/doc/sf_and_dist/zeta.qbk	(original)
+++ branches/release/libs/math/doc/sf_and_dist/zeta.qbk	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -87,12 +87,6 @@
 
 [equation zeta6]
 
-except when the argument is close to 1, where the globally convergent series:
-
-[equation zeta2]
-
-Is used.
-
 When the significand (mantissa) size is recognised
 (currently for 53, 64 and 113-bit reals, plus single-precision 24-bit handled via promotion to double)
 then a series of rational approximations [jm_rationals] are used.
Modified: branches/release/libs/math/test/Jamfile.v2
==============================================================================
--- branches/release/libs/math/test/Jamfile.v2	(original)
+++ branches/release/libs/math/test/Jamfile.v2	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -57,22 +57,23 @@
     ;
 
 cpp-pch pch : pch.hpp : <use>../../test/build//boost_test_exec_monitor ;
+cpp-pch pch_light : pch_light.hpp : <use>../../test/build//boost_test_exec_monitor ;
 
 lib test_instances : float_test_instances.cpp double_test_instances.cpp ldouble_test_instances.cpp real_concept_test_instances.cpp pch 
                    : <link>static ;
 
-run hypot_test.cpp pch ../../test/build//boost_test_exec_monitor ;
+run hypot_test.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run pow_test.cpp ../../test/build//boost_test_exec_monitor ;
-run log1p_expm1_test.cpp pch ../../test/build//boost_test_exec_monitor ;
-run powm1_sqrtp1m1_test.cpp pch ../../test/build//boost_test_exec_monitor ;
+run log1p_expm1_test.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run powm1_sqrtp1m1_test.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run special_functions_test.cpp ../../test/build//boost_unit_test_framework/<link>static ;
 run test_bernoulli.cpp ../../test/build//boost_test_exec_monitor ;
 run test_constants.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_bessel_j.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_bessel_y.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_bessel_i.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_bessel_k.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_beta.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_bessel_j.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run test_bessel_y.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run test_bessel_i.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run test_bessel_k.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run test_beta.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_beta_dist.cpp ../../test/build//boost_test_exec_monitor ;
 run test_binomial.cpp  ../../test/build//boost_test_exec_monitor
         : # command line
@@ -152,29 +153,29 @@
               <toolset>intel:<pch>off
         : test_binomial_real_concept6 ;
 run test_binomial_coeff.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_carlson.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_carlson.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_cauchy.cpp ../../test/build//boost_test_exec_monitor ;
-run test_cbrt.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_cbrt.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_chi_squared.cpp ../../test/build//boost_test_exec_monitor ;
 run test_classify.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_digamma.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_digamma.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_dist_overloads.cpp ../../test/build//boost_test_exec_monitor ;
-run test_ellint_1.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_ellint_2.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_ellint_3.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_erf.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_ellint_1.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run test_ellint_2.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run test_ellint_3.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run test_erf.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_error_handling.cpp ../../test/build//boost_test_exec_monitor ;
-run test_expint.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_expint.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_exponential_dist.cpp ../../test/build//boost_test_exec_monitor ;
 run test_extreme_value.cpp ../../test/build//boost_test_exec_monitor ;
 run test_factorials.cpp pch ../../test/build//boost_test_exec_monitor ;
 run test_find_location.cpp pch ../../test/build//boost_test_exec_monitor ;
 run test_find_scale.cpp pch ../../test/build//boost_test_exec_monitor ;
 run test_fisher_f.cpp ../../test/build//boost_test_exec_monitor ;
-run test_gamma.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_gamma.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_gamma_dist.cpp pch ../../test/build//boost_test_exec_monitor ;
 run test_geometric.cpp ../../test/build//boost_test_exec_monitor ;
-run test_hermite.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_hermite.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_hypergeometric_dist.cpp ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
@@ -217,28 +218,28 @@
               <define>TEST_QUANT=5
               <toolset>intel:<pch>off
         : test_hypergeometric_dist5 ;
-run test_ibeta.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_FLOAT
               <toolset>intel:<pch>off
         : test_ibeta_float ;
-run test_ibeta.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_DOUBLE
               <toolset>intel:<pch>off
         : test_ibeta_double ;
-run test_ibeta.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_LDOUBLE
               <toolset>intel:<pch>off
         : test_ibeta_long_double ;
-run test_ibeta.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -246,7 +247,7 @@
               <define>TEST_DATA=1
               <toolset>intel:<pch>off
         : test_ibeta_real_concept1 ;
-run test_ibeta.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -254,7 +255,7 @@
               <define>TEST_DATA=2
               <toolset>intel:<pch>off
         : test_ibeta_real_concept2 ;
-run test_ibeta.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -262,7 +263,7 @@
               <define>TEST_DATA=3
               <toolset>intel:<pch>off
         : test_ibeta_real_concept3 ;
-run test_ibeta.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -270,28 +271,28 @@
               <define>TEST_DATA=4
               <toolset>intel:<pch>off
         : test_ibeta_real_concept4 ;
-run test_ibeta_inv.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_FLOAT
               <toolset>intel:<pch>off
         : test_ibeta_inv_float ;
-run test_ibeta_inv.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_DOUBLE
               <toolset>intel:<pch>off
         : test_ibeta_inv_double ;
-run test_ibeta_inv.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_LDOUBLE
               <toolset>intel:<pch>off
         : test_ibeta_inv_long_double ;
-run test_ibeta_inv.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -299,7 +300,7 @@
               <define>TEST_DATA=1
               <toolset>intel:<pch>off
         : test_ibeta_inv_real_concept1 ;
-run test_ibeta_inv.cpp  ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -307,7 +308,7 @@
               <define>TEST_DATA=2
               <toolset>intel:<pch>off
         : test_ibeta_inv_real_concept2 ;
-run test_ibeta_inv.cpp  ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -315,7 +316,7 @@
               <define>TEST_DATA=3
               <toolset>intel:<pch>off
         : test_ibeta_inv_real_concept3 ;
-run test_ibeta_inv.cpp  ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -323,28 +324,28 @@
               <define>TEST_DATA=4
               <toolset>intel:<pch>off
         : test_ibeta_inv_real_concept4 ;
-run test_ibeta_inv_ab.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv_ab.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_FLOAT
               <toolset>intel:<pch>off
         : test_ibeta_inv_ab_float ;
-run test_ibeta_inv_ab.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv_ab.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_DOUBLE
               <toolset>intel:<pch>off
         : test_ibeta_inv_ab_double ;
-run test_ibeta_inv_ab.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv_ab.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_LDOUBLE
               <toolset>intel:<pch>off
         : test_ibeta_inv_ab_long_double ;
-run test_ibeta_inv_ab.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv_ab.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -352,7 +353,7 @@
               <define>TEST_DATA=1
               <toolset>intel:<pch>off
         : test_ibeta_inv_ab_real_concept1 ;
-run test_ibeta_inv_ab.cpp  ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv_ab.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -360,7 +361,7 @@
               <define>TEST_DATA=2
               <toolset>intel:<pch>off
         : test_ibeta_inv_ab_real_concept2 ;
-run test_ibeta_inv_ab.cpp  ../../test/build//boost_test_exec_monitor
+run test_ibeta_inv_ab.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -368,57 +369,57 @@
               <define>TEST_DATA=3
               <toolset>intel:<pch>off
         : test_ibeta_inv_ab_real_concept3 ;
-run test_igamma.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_igamma_inv.cpp pch  ../../test/build//boost_test_exec_monitor
+run test_igamma.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run test_igamma_inv.cpp test_instances pch_light  ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_FLOAT
               <toolset>intel:<pch>off
         : test_igamma_inv_float ;
-run test_igamma_inv.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_igamma_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_DOUBLE
               <toolset>intel:<pch>off
         : test_igamma_inv_double ;
-run test_igamma_inv.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_igamma_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_LDOUBLE
               <toolset>intel:<pch>off
         : test_igamma_inv_long_double ;
-run test_igamma_inv.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_igamma_inv.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_REAL_CONCEPT
               <toolset>intel:<pch>off
         : test_igamma_inv_real_concept ;
-run test_igamma_inva.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_igamma_inva.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_FLOAT
               <toolset>intel:<pch>off
         : test_igamma_inva_float ;
-run test_igamma_inva.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_igamma_inva.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_DOUBLE
               <toolset>intel:<pch>off
         : test_igamma_inva_double ;
-run test_igamma_inva.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_igamma_inva.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
               <define>TEST_LDOUBLE
               <toolset>intel:<pch>off
         : test_igamma_inva_long_double ;
-run test_igamma_inva.cpp  pch ../../test/build//boost_test_exec_monitor
+run test_igamma_inva.cpp  test_instances pch_light ../../test/build//boost_test_exec_monitor
         : # command line
         : # input files
         : # requirements
@@ -433,8 +434,8 @@
 
 run test_laplace.cpp ../../test/build//boost_unit_test_framework/<link>static ;
 run test_inv_hyp.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_laguerre.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_legendre.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_laguerre.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
+run test_legendre.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_logistic_dist.cpp ../../test/build//boost_test_exec_monitor ;
 run test_lognormal.cpp ../../test/build//boost_test_exec_monitor ;
 run test_minima.cpp pch ../../test/build//boost_test_exec_monitor ;
@@ -619,7 +620,7 @@
 run test_remez.cpp pch ../../test/build//boost_test_exec_monitor ;
 run test_roots.cpp pch ../../test/build//boost_test_exec_monitor ;
 run test_round.cpp pch ../../test/build//boost_test_exec_monitor ;
-run test_spherical_harmonic.cpp pch ../../test/build//boost_test_exec_monitor ;
+run test_spherical_harmonic.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_students_t.cpp ../../test/build//boost_test_exec_monitor ;
 run test_sign.cpp ../../test/build//boost_test_exec_monitor ;
 run test_tgamma_ratio.cpp pch ../../test/build//boost_test_exec_monitor ;
@@ -627,7 +628,7 @@
 run test_triangular.cpp pch ../../test/build//boost_test_exec_monitor ;
 run test_uniform.cpp pch ../../test/build//boost_test_exec_monitor ;
 run test_weibull.cpp ../../test/build//boost_test_exec_monitor ;
-run test_zeta.cpp test_instances ../../test/build//boost_test_exec_monitor ;
+run test_zeta.cpp test_instances ../../test/build//boost_test_exec_monitor pch_light ;
 
 run test_policy.cpp ../../test/build//boost_test_exec_monitor ;
 run test_policy_2.cpp ../../test/build//boost_test_exec_monitor ;
Modified: branches/release/libs/math/test/hypot_test.cpp
==============================================================================
--- branches/release/libs/math/test/hypot_test.cpp	(original)
+++ branches/release/libs/math/test/hypot_test.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,12 +3,12 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 
 #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/hypot.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 
 #include <cmath>
 
Modified: branches/release/libs/math/test/log1p_expm1_test.cpp
==============================================================================
--- branches/release/libs/math/test/log1p_expm1_test.cpp	(original)
+++ branches/release/libs/math/test/log1p_expm1_test.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -4,7 +4,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 
 // Requires MS extensions permitted or fails to link.
 
@@ -14,8 +14,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/log1p.hpp>
-#include <boost/math/special_functions/expm1.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "log1p_expm1_test.hpp"
 
 //
Modified: branches/release/libs/math/test/powm1_sqrtp1m1_test.cpp
==============================================================================
--- branches/release/libs/math/test/powm1_sqrtp1m1_test.cpp	(original)
+++ branches/release/libs/math/test/powm1_sqrtp1m1_test.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,13 +3,12 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/sqrt1pm1.hpp>
-#include <boost/math/special_functions/powm1.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/tools/test.hpp>
 #include "powm1_sqrtp1m1_test.hpp"
 
Modified: branches/release/libs/math/test/test_bessel_i.cpp
==============================================================================
--- branches/release/libs/math/test/test_bessel_i.cpp	(original)
+++ branches/release/libs/math/test/test_bessel_i.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_bessel_i.hpp"
 
 //
Modified: branches/release/libs/math/test/test_bessel_i.hpp
==============================================================================
--- branches/release/libs/math/test/test_bessel_i.hpp	(original)
+++ branches/release/libs/math/test/test_bessel_i.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,8 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/bessel.hpp>
-#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/type_traits/is_floating_point.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
Modified: branches/release/libs/math/test/test_bessel_j.cpp
==============================================================================
--- branches/release/libs/math/test/test_bessel_j.cpp	(original)
+++ branches/release/libs/math/test/test_bessel_j.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 
 #include "test_bessel_j.hpp"
 
Modified: branches/release/libs/math/test/test_bessel_j.hpp
==============================================================================
--- branches/release/libs/math/test/test_bessel_j.hpp	(original)
+++ branches/release/libs/math/test/test_bessel_j.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,8 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/bessel.hpp>
-#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/type_traits/is_floating_point.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
Modified: branches/release/libs/math/test/test_bessel_k.cpp
==============================================================================
--- branches/release/libs/math/test/test_bessel_k.cpp	(original)
+++ branches/release/libs/math/test/test_bessel_k.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -5,7 +5,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 
 #ifdef _MSC_VER
 #  pragma warning(disable : 4756) // overflow in constant arithmetic
Modified: branches/release/libs/math/test/test_bessel_k.hpp
==============================================================================
--- branches/release/libs/math/test/test_bessel_k.hpp	(original)
+++ branches/release/libs/math/test/test_bessel_k.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,8 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/bessel.hpp>
-#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/type_traits/is_floating_point.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
Modified: branches/release/libs/math/test/test_bessel_y.cpp
==============================================================================
--- branches/release/libs/math/test/test_bessel_y.cpp	(original)
+++ branches/release/libs/math/test/test_bessel_y.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 
 #include "test_bessel_y.hpp"
 
Modified: branches/release/libs/math/test/test_bessel_y.hpp
==============================================================================
--- branches/release/libs/math/test/test_bessel_y.hpp	(original)
+++ branches/release/libs/math/test/test_bessel_y.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,8 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/bessel.hpp>
-#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/type_traits/is_floating_point.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
Modified: branches/release/libs/math/test/test_beta.cpp
==============================================================================
--- branches/release/libs/math/test/test_beta.cpp	(original)
+++ branches/release/libs/math/test/test_beta.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -5,7 +5,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include "pch_light.hpp"
 
 #include "test_beta.hpp"
 
Modified: branches/release/libs/math/test/test_beta.hpp
==============================================================================
--- branches/release/libs/math/test/test_beta.hpp	(original)
+++ branches/release/libs/math/test/test_beta.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -13,7 +13,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/tools/stats.hpp>
 #include <boost/math/tools/test.hpp>
 #include <boost/math/constants/constants.hpp>
Modified: branches/release/libs/math/test/test_carlson.cpp
==============================================================================
--- branches/release/libs/math/test/test_carlson.cpp	(original)
+++ branches/release/libs/math/test/test_carlson.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -5,7 +5,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_carlson.hpp"
 
 //
Modified: branches/release/libs/math/test/test_carlson.hpp
==============================================================================
--- branches/release/libs/math/test/test_carlson.hpp	(original)
+++ branches/release/libs/math/test/test_carlson.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,10 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/ellint_rf.hpp>
-#include <boost/math/special_functions/ellint_rc.hpp>
-#include <boost/math/special_functions/ellint_rj.hpp>
-#include <boost/math/special_functions/ellint_rd.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/constants/constants.hpp>
 #include <boost/array.hpp>
 #include <boost/tr1/random.hpp>
Modified: branches/release/libs/math/test/test_cbrt.cpp
==============================================================================
--- branches/release/libs/math/test/test_cbrt.cpp	(original)
+++ branches/release/libs/math/test/test_cbrt.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -9,7 +9,7 @@
 #  pragma warning (disable : 4224)
 #endif
 
-#include <pch.hpp> // include /libs/math/src/
+#include <pch_light.hpp> // include /libs/math/src/
 #include "test_cbrt.hpp"
 
 //
Modified: branches/release/libs/math/test/test_cbrt.hpp
==============================================================================
--- branches/release/libs/math/test/test_cbrt.hpp	(original)
+++ branches/release/libs/math/test/test_cbrt.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -11,7 +11,7 @@
 #include <boost/math/tools/test.hpp>
 #include <boost/type_traits/is_floating_point.hpp>
 #include <boost/array.hpp>
-#include <boost/math/special_functions/cbrt.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include "functor.hpp"
 
 #include "handle_test_result.hpp"
Modified: branches/release/libs/math/test/test_digamma.cpp
==============================================================================
--- branches/release/libs/math/test/test_digamma.cpp	(original)
+++ branches/release/libs/math/test/test_digamma.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_digamma.hpp"
 
 //
Modified: branches/release/libs/math/test/test_digamma.hpp
==============================================================================
--- branches/release/libs/math/test/test_digamma.hpp	(original)
+++ branches/release/libs/math/test/test_digamma.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,7 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/digamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
 
Modified: branches/release/libs/math/test/test_ellint_1.cpp
==============================================================================
--- branches/release/libs/math/test/test_ellint_1.cpp	(original)
+++ branches/release/libs/math/test/test_ellint_1.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -6,7 +6,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_ellint_1.hpp"
 
 //
Modified: branches/release/libs/math/test/test_ellint_1.hpp
==============================================================================
--- branches/release/libs/math/test/test_ellint_1.hpp	(original)
+++ branches/release/libs/math/test/test_ellint_1.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -12,7 +12,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/ellint_1.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
 
Modified: branches/release/libs/math/test/test_ellint_2.cpp
==============================================================================
--- branches/release/libs/math/test/test_ellint_2.cpp	(original)
+++ branches/release/libs/math/test/test_ellint_2.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -6,7 +6,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_ellint_2.hpp"
 
 //
Modified: branches/release/libs/math/test/test_ellint_2.hpp
==============================================================================
--- branches/release/libs/math/test/test_ellint_2.hpp	(original)
+++ branches/release/libs/math/test/test_ellint_2.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -12,7 +12,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/ellint_2.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
 
Modified: branches/release/libs/math/test/test_ellint_3.cpp
==============================================================================
--- branches/release/libs/math/test/test_ellint_3.cpp	(original)
+++ branches/release/libs/math/test/test_ellint_3.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -6,7 +6,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_ellint_3.hpp"
 
 //
Modified: branches/release/libs/math/test/test_ellint_3.hpp
==============================================================================
--- branches/release/libs/math/test/test_ellint_3.hpp	(original)
+++ branches/release/libs/math/test/test_ellint_3.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -12,7 +12,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/ellint_3.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
 
Modified: branches/release/libs/math/test/test_erf.cpp
==============================================================================
--- branches/release/libs/math/test/test_erf.cpp	(original)
+++ branches/release/libs/math/test/test_erf.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -4,7 +4,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_erf.hpp"
 
 //
Modified: branches/release/libs/math/test/test_erf.hpp
==============================================================================
--- branches/release/libs/math/test/test_erf.hpp	(original)
+++ branches/release/libs/math/test/test_erf.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,7 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/erf.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/constants/constants.hpp>
 #include <boost/type_traits/is_floating_point.hpp>
 #include <boost/array.hpp>
Modified: branches/release/libs/math/test/test_expint.cpp
==============================================================================
--- branches/release/libs/math/test/test_expint.cpp	(original)
+++ branches/release/libs/math/test/test_expint.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_expint.hpp"
 
 //
Modified: branches/release/libs/math/test/test_expint.hpp
==============================================================================
--- branches/release/libs/math/test/test_expint.hpp	(original)
+++ branches/release/libs/math/test/test_expint.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -5,8 +5,7 @@
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #include <boost/math/concepts/real_concept.hpp>
-#include <boost/math/special_functions/expint.hpp>
-#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
 #include <boost/math/tools/stats.hpp>
Modified: branches/release/libs/math/test/test_gamma.cpp
==============================================================================
--- branches/release/libs/math/test/test_gamma.cpp	(original)
+++ branches/release/libs/math/test/test_gamma.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_gamma.hpp"
 
 //
Modified: branches/release/libs/math/test/test_gamma.hpp
==============================================================================
--- branches/release/libs/math/test/test_gamma.hpp	(original)
+++ branches/release/libs/math/test/test_gamma.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,7 +7,7 @@
 #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
 
 #include <boost/math/concepts/real_concept.hpp>
-#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
 #include <boost/math/tools/stats.hpp>
Modified: branches/release/libs/math/test/test_hermite.cpp
==============================================================================
--- branches/release/libs/math/test/test_hermite.cpp	(original)
+++ branches/release/libs/math/test/test_hermite.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -5,7 +5,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include"test_hermite.hpp"
 
 //
Modified: branches/release/libs/math/test/test_hermite.hpp
==============================================================================
--- branches/release/libs/math/test/test_hermite.hpp	(original)
+++ branches/release/libs/math/test/test_hermite.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -14,7 +14,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/hermite.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/constants/constants.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
Modified: branches/release/libs/math/test/test_ibeta.cpp
==============================================================================
--- branches/release/libs/math/test/test_ibeta.cpp	(original)
+++ branches/release/libs/math/test/test_ibeta.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_ibeta.hpp"
 
 #if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT)
Modified: branches/release/libs/math/test/test_ibeta.hpp
==============================================================================
--- branches/release/libs/math/test/test_ibeta.hpp	(original)
+++ branches/release/libs/math/test/test_ibeta.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,7 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/tools/stats.hpp>
 #include <boost/math/tools/test.hpp>
 #include <boost/math/constants/constants.hpp>
Modified: branches/release/libs/math/test/test_ibeta_inv.cpp
==============================================================================
--- branches/release/libs/math/test/test_ibeta_inv.cpp	(original)
+++ branches/release/libs/math/test/test_ibeta_inv.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include"test_ibeta_inv.hpp"
 
 #if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT)
Modified: branches/release/libs/math/test/test_ibeta_inv.hpp
==============================================================================
--- branches/release/libs/math/test/test_ibeta_inv.hpp	(original)
+++ branches/release/libs/math/test/test_ibeta_inv.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,7 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/tools/stats.hpp>
 #include <boost/math/tools/test.hpp>
 #include <boost/math/constants/constants.hpp>
Modified: branches/release/libs/math/test/test_ibeta_inv_ab.cpp
==============================================================================
--- branches/release/libs/math/test/test_ibeta_inv_ab.cpp	(original)
+++ branches/release/libs/math/test/test_ibeta_inv_ab.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_ibeta_inv_ab.hpp"
 
 #if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT)
Modified: branches/release/libs/math/test/test_ibeta_inv_ab.hpp
==============================================================================
--- branches/release/libs/math/test/test_ibeta_inv_ab.hpp	(original)
+++ branches/release/libs/math/test/test_ibeta_inv_ab.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -9,7 +9,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/tools/stats.hpp>
 #include <boost/math/tools/test.hpp>
 #include <boost/math/constants/constants.hpp>
Modified: branches/release/libs/math/test/test_igamma.cpp
==============================================================================
--- branches/release/libs/math/test/test_igamma.cpp	(original)
+++ branches/release/libs/math/test/test_igamma.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_igamma.hpp"
 
 //
Modified: branches/release/libs/math/test/test_igamma.hpp
==============================================================================
--- branches/release/libs/math/test/test_igamma.hpp	(original)
+++ branches/release/libs/math/test/test_igamma.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,7 +7,7 @@
 #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
 
 #include <boost/math/concepts/real_concept.hpp>
-#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
 #include <boost/math/tools/stats.hpp>
Modified: branches/release/libs/math/test/test_igamma_inv.cpp
==============================================================================
--- branches/release/libs/math/test/test_igamma_inv.cpp	(original)
+++ branches/release/libs/math/test/test_igamma_inv.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_igamma_inv.hpp"
 
 #if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT)
Modified: branches/release/libs/math/test/test_igamma_inv.hpp
==============================================================================
--- branches/release/libs/math/test/test_igamma_inv.hpp	(original)
+++ branches/release/libs/math/test/test_igamma_inv.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -5,7 +5,7 @@
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #include <boost/math/concepts/real_concept.hpp>
-#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/results_collector.hpp>
 #include <boost/test/unit_test.hpp>
Modified: branches/release/libs/math/test/test_igamma_inva.cpp
==============================================================================
--- branches/release/libs/math/test/test_igamma_inva.cpp	(original)
+++ branches/release/libs/math/test/test_igamma_inva.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_igamma_inva.hpp"
 
 #if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT)
Modified: branches/release/libs/math/test/test_igamma_inva.hpp
==============================================================================
--- branches/release/libs/math/test/test_igamma_inva.hpp	(original)
+++ branches/release/libs/math/test/test_igamma_inva.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,7 +7,7 @@
 #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
 
 #include <boost/math/concepts/real_concept.hpp>
-#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/results_collector.hpp>
 #include <boost/test/unit_test.hpp>
Modified: branches/release/libs/math/test/test_instances.hpp
==============================================================================
--- branches/release/libs/math/test/test_instances.hpp	(original)
+++ branches/release/libs/math/test/test_instances.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -6,8 +6,363 @@
 
 namespace boost{ namespace math{
 
-template tools::promote_args<BOOST_MATH_TEST_TYPE>::type zeta(BOOST_MATH_TEST_TYPE s, const policies::policy<>&);
+   typedef policies::policy<policies::overflow_error<policies::throw_on_error> > overflow_policy;
 
-template tools::promote_args<BOOST_MATH_TEST_TYPE>::type zeta(BOOST_MATH_TEST_TYPE s);
+   // Beta functions.
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         beta(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b); // Beta function (2 arguments).
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         beta(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, policies::policy<>); // Beta function (3 arguments).
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         beta(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE); // Beta function (3 arguments).
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         beta(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol); // Beta function (3 arguments).
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         betac(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         betac(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE x); // Incomplete beta function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol); // Incomplete beta function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE x); // Incomplete beta complement function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol); // Incomplete beta complement function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type  
+         ibeta_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE p, BOOST_MATH_TEST_TYPE* py);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type  
+         ibeta_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE p, BOOST_MATH_TEST_TYPE* py, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE p); // Incomplete beta inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE p, const policies::policy<>&); // Incomplete beta inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta_inva(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE p); // Incomplete beta inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta_inva(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE p, const policies::policy<>&); // Incomplete beta inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta_invb(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE p); // Incomplete beta inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta_invb(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE p, const policies::policy<>&); // Incomplete beta inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE q, BOOST_MATH_TEST_TYPE* py);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE q, BOOST_MATH_TEST_TYPE* py, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE q); // Incomplete beta complement inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE q, const policies::policy<>&); // Incomplete beta complement inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac_inva(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE q); // Incomplete beta complement inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac_inva(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE q, const policies::policy<>&); // Incomplete beta complement inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac_invb(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE q); // Incomplete beta complement inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibetac_invb(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE q, const policies::policy<>&); // Incomplete beta complement inverse function.
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta_derivative(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE x);  // derivative of incomplete beta
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ibeta_derivative(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol);  // derivative of incomplete beta
+
+   // erf & erfc error functions.
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type erf(BOOST_MATH_TEST_TYPE z);
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type erf(BOOST_MATH_TEST_TYPE z, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type erfc(BOOST_MATH_TEST_TYPE z);
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type erfc(BOOST_MATH_TEST_TYPE z, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type erf_inv(BOOST_MATH_TEST_TYPE z);
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type erf_inv(BOOST_MATH_TEST_TYPE z, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type erfc_inv(BOOST_MATH_TEST_TYPE z);
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type erfc_inv(BOOST_MATH_TEST_TYPE z, const policies::policy<>& pol);
+
+   // Polynomials:
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         legendre_next(unsigned l, BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE Pl, BOOST_MATH_TEST_TYPE Plm1);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+         legendre_p(int l, BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+         legendre_p(int l, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+         legendre_q(unsigned l, BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+         legendre_q(unsigned l, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         legendre_next(unsigned l, unsigned m, BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE Pl, BOOST_MATH_TEST_TYPE Plm1);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+         legendre_p(int l, int m, BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+         legendre_p(int l, int m, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type  
+         laguerre_next(unsigned n, BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE Ln, BOOST_MATH_TEST_TYPE Lnm1);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type  
+      laguerre_next(unsigned n, unsigned l, BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE Pl, BOOST_MATH_TEST_TYPE Plm1);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+      laguerre(unsigned n, BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+      laguerre(unsigned n, unsigned m, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol);
+
+   template laguerre_result<int, BOOST_MATH_TEST_TYPE>::type 
+      laguerre(unsigned n, int m, BOOST_MATH_TEST_TYPE x);
+
+   template laguerre_result<unsigned, BOOST_MATH_TEST_TYPE>::type 
+      laguerre(unsigned n, unsigned m, BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+      hermite(unsigned n, BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type 
+      hermite(unsigned n, BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+      hermite_next(unsigned n, BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE Hn, BOOST_MATH_TEST_TYPE Hnm1);
+
+   template std::complex<BOOST_MATH_TEST_TYPE> 
+         spherical_harmonic(unsigned n, int m, BOOST_MATH_TEST_TYPE theta, BOOST_MATH_TEST_TYPE phi);
+
+   template std::complex<BOOST_MATH_TEST_TYPE> 
+      spherical_harmonic(unsigned n, int m, BOOST_MATH_TEST_TYPE theta, BOOST_MATH_TEST_TYPE phi, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         spherical_harmonic_r(unsigned n, int m, BOOST_MATH_TEST_TYPE theta, BOOST_MATH_TEST_TYPE phi);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+      spherical_harmonic_r(unsigned n, int m, BOOST_MATH_TEST_TYPE theta, BOOST_MATH_TEST_TYPE phi, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         spherical_harmonic_i(unsigned n, int m, BOOST_MATH_TEST_TYPE theta, BOOST_MATH_TEST_TYPE phi);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+      spherical_harmonic_i(unsigned n, int m, BOOST_MATH_TEST_TYPE theta, BOOST_MATH_TEST_TYPE phi, const policies::policy<>& pol);
+
+    // Elliptic integrals:
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ellint_rf(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y, BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ellint_rf(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y, BOOST_MATH_TEST_TYPE z, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ellint_rd(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y, BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ellint_rd(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y, BOOST_MATH_TEST_TYPE z, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ellint_rc(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ellint_rc(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ellint_rj(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y, BOOST_MATH_TEST_TYPE z, BOOST_MATH_TEST_TYPE p);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         ellint_rj(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y, BOOST_MATH_TEST_TYPE z, BOOST_MATH_TEST_TYPE p, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type ellint_2(BOOST_MATH_TEST_TYPE k);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type ellint_2(BOOST_MATH_TEST_TYPE k, BOOST_MATH_TEST_TYPE phi);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type ellint_2(BOOST_MATH_TEST_TYPE k, BOOST_MATH_TEST_TYPE phi, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type ellint_1(BOOST_MATH_TEST_TYPE k);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type ellint_1(BOOST_MATH_TEST_TYPE k, BOOST_MATH_TEST_TYPE phi);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type ellint_1(BOOST_MATH_TEST_TYPE k, BOOST_MATH_TEST_TYPE phi, const policies::policy<>& pol);
+
+   template detail::ellint_3_result<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type ellint_3(BOOST_MATH_TEST_TYPE k, BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE phi);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type ellint_3(BOOST_MATH_TEST_TYPE k, BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE phi, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type ellint_3(BOOST_MATH_TEST_TYPE k, BOOST_MATH_TEST_TYPE v);
+
+   // Gamma functions.
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type tgamma(BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type tgamma1pm1(BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type tgamma1pm1(BOOST_MATH_TEST_TYPE z, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type tgamma(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type tgamma(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE z, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type lgamma(BOOST_MATH_TEST_TYPE z, int* sign);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type lgamma(BOOST_MATH_TEST_TYPE z, int* sign, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type lgamma(BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type lgamma(BOOST_MATH_TEST_TYPE x, const policies::policy<>& pol);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type tgamma_lower(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type tgamma_lower(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE z, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_q(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_q(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE z, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_p(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_p(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE z, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type tgamma_delta_ratio(BOOST_MATH_TEST_TYPE z, BOOST_MATH_TEST_TYPE delta);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type tgamma_delta_ratio(BOOST_MATH_TEST_TYPE z, BOOST_MATH_TEST_TYPE delta, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type tgamma_ratio(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type tgamma_ratio(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE b, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_p_derivative(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_p_derivative(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE x, const policies::policy<>&);
+
+   // gamma inverse.
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_p_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE p);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_p_inva(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE p, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_p_inva(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE p);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_p_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE p, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_q_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE q);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_q_inv(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE q, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_q_inva(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE q);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type gamma_q_inva(BOOST_MATH_TEST_TYPE a, BOOST_MATH_TEST_TYPE q, const policies::policy<>&);
+
+   // digamma:
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type digamma(BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type digamma(BOOST_MATH_TEST_TYPE x, const policies::policy<>&);
+
+   // Hypotenuse function sqrt(x ^ 2 + y ^ 2).
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         hypot(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         hypot(BOOST_MATH_TEST_TYPE x, BOOST_MATH_TEST_TYPE y, const policies::policy<>&);
+
+   // cbrt - cube root.
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type cbrt(BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type cbrt(BOOST_MATH_TEST_TYPE z, const policies::policy<>&);
+
+   // log1p is log(x + 1)
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type log1p(BOOST_MATH_TEST_TYPE);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type log1p(BOOST_MATH_TEST_TYPE, const policies::policy<>&);
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type log1p<BOOST_MATH_TEST_TYPE, overflow_policy>(BOOST_MATH_TEST_TYPE, const overflow_policy&);
+
+   // log1pmx is log(x + 1) - x
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type log1pmx(BOOST_MATH_TEST_TYPE);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type log1pmx(BOOST_MATH_TEST_TYPE, const policies::policy<>&);
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type log1pmx(BOOST_MATH_TEST_TYPE, const overflow_policy&);
+
+   // Exp (x) minus 1 functions.
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type expm1(BOOST_MATH_TEST_TYPE);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type expm1(BOOST_MATH_TEST_TYPE, const policies::policy<>&);
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type expm1(BOOST_MATH_TEST_TYPE, const overflow_policy&);
+
+   // Power - 1
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         powm1(const BOOST_MATH_TEST_TYPE a, const BOOST_MATH_TEST_TYPE z);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE>::type 
+         powm1(const BOOST_MATH_TEST_TYPE a, const BOOST_MATH_TEST_TYPE z, const policies::policy<>&);
+
+   // sqrt(1+x) - 1
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type sqrt1pm1(const BOOST_MATH_TEST_TYPE& val);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type sqrt1pm1(const BOOST_MATH_TEST_TYPE& val, const policies::policy<>&);
+
+   // Bessel functions:
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_bessel_j(BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE x, const policies::policy<> & pol);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_bessel_j(BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE x);
+   template detail::bessel_traits<int, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_bessel_j(int v, BOOST_MATH_TEST_TYPE x);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type sph_bessel(unsigned v, BOOST_MATH_TEST_TYPE x, const policies::policy<> & pol);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type sph_bessel(unsigned v, BOOST_MATH_TEST_TYPE x);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_bessel_i(BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE x, const policies::policy<> & pol);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_bessel_i(BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE x);
+   template detail::bessel_traits<int, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_bessel_i(int v, BOOST_MATH_TEST_TYPE x);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_bessel_k(BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE x, const policies::policy<> & pol);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_bessel_k(BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE x);
+   template detail::bessel_traits<int, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_bessel_k(int v, BOOST_MATH_TEST_TYPE x);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_neumann(BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE x, const policies::policy<> & pol);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_neumann(BOOST_MATH_TEST_TYPE v, BOOST_MATH_TEST_TYPE x);
+   template detail::bessel_traits<int, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type cyl_neumann(int v, BOOST_MATH_TEST_TYPE x);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type sph_neumann(unsigned v, BOOST_MATH_TEST_TYPE x, const policies::policy<> & pol);
+
+   template detail::bessel_traits<BOOST_MATH_TEST_TYPE, BOOST_MATH_TEST_TYPE, policies::policy<> >::result_type sph_neumann(unsigned v, BOOST_MATH_TEST_TYPE x);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type expint(unsigned n, BOOST_MATH_TEST_TYPE z, const policies::policy<> &);
+
+   template detail::expint_result<int, BOOST_MATH_TEST_TYPE>::type expint(int const z, BOOST_MATH_TEST_TYPE const u);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type expint(BOOST_MATH_TEST_TYPE z);
+
+   // Zeta:
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type zeta(BOOST_MATH_TEST_TYPE s, const policies::policy<>&);
+
+   template tools::promote_args<BOOST_MATH_TEST_TYPE>::type zeta(BOOST_MATH_TEST_TYPE s);
 
 }} // namespaces
Modified: branches/release/libs/math/test/test_laguerre.cpp
==============================================================================
--- branches/release/libs/math/test/test_laguerre.cpp	(original)
+++ branches/release/libs/math/test/test_laguerre.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_laguerre.hpp"
 
 //
Modified: branches/release/libs/math/test/test_laguerre.hpp
==============================================================================
--- branches/release/libs/math/test/test_laguerre.hpp	(original)
+++ branches/release/libs/math/test/test_laguerre.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -7,7 +7,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/laguerre.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/constants/constants.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
Modified: branches/release/libs/math/test/test_legendre.cpp
==============================================================================
--- branches/release/libs/math/test/test_legendre.cpp	(original)
+++ branches/release/libs/math/test/test_legendre.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,7 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 #include "test_legendre.hpp"
 
 //
Modified: branches/release/libs/math/test/test_legendre.hpp
==============================================================================
--- branches/release/libs/math/test/test_legendre.hpp	(original)
+++ branches/release/libs/math/test/test_legendre.hpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -11,7 +11,7 @@
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/legendre.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/constants/constants.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
Modified: branches/release/libs/math/test/test_spherical_harmonic.cpp
==============================================================================
--- branches/release/libs/math/test/test_spherical_harmonic.cpp	(original)
+++ branches/release/libs/math/test/test_spherical_harmonic.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,12 +3,12 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <pch.hpp>
+#include <pch_light.hpp>
 
 #include <boost/math/concepts/real_concept.hpp>
 #include <boost/test/test_exec_monitor.hpp>
 #include <boost/test/floating_point_comparison.hpp>
-#include <boost/math/special_functions/spherical_harmonic.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
 #include <boost/math/constants/constants.hpp>
 #include <boost/array.hpp>
 #include "functor.hpp"
Modified: branches/release/libs/math/test/test_zeta.cpp
==============================================================================
--- branches/release/libs/math/test/test_zeta.cpp	(original)
+++ branches/release/libs/math/test/test_zeta.cpp	2012-01-08 08:10:31 EST (Sun, 08 Jan 2012)
@@ -3,6 +3,7 @@
 //  Boost Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include "pch_light.hpp"
 #include "test_zeta.hpp"
 
 //