Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r78527 - in trunk: boost/math boost/math/special_functions boost/math/tools libs/math/doc/sf_and_dist libs/math/doc/sf_and_dist/equations libs/math/doc/sf_and_dist/graphs libs/math/doc/sf_and_dist/html libs/math/doc/sf_and_dist/html/index libs/math/doc/sf_and_dist/html/math_toolkit libs/math/doc/sf_and_dist/html/math_toolkit/main_overview libs/math/doc/sf_and_dist/html/math_toolkit/special libs/math/doc/sf_and_dist/html/math_toolkit/special/airy libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel libs/math/test libs/math/test/compile_test
From: john_at_[hidden]
Date: 2012-05-21 05:45:53


Author: johnmaddock
Date: 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
New Revision: 78527
URL: http://svn.boost.org/trac/boost/changeset/78527

Log:
Add basic versions of the Airy functions.
Add some extra jacobi, hankel and owens_t tests and fix resulting errors.
Allow remez code to work with expression template types.
Regenerate docs.
Added:
   trunk/boost/math/special_functions/airy.hpp (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/airy.qbk (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_ai.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_ai.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_ai.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_aip.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_aip.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_aip.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_bi.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_bi.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_bi.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_bip.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_bip.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/airy_bip.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/graphs/airy_ai.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/graphs/airy_ai.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/graphs/airy_aip.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/graphs/airy_aip.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/graphs/airy_bi.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/graphs/airy_bi.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/graphs/airy_bip.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/graphs/airy_bip.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/ai.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/aip.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/bi.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/bip.html (contents, props changed)
   trunk/libs/math/test/compile_test/sf_airy_incl_test.cpp (contents, props changed)
   trunk/libs/math/test/compile_test/sf_hankel_incl_test.cpp (contents, props changed)
   trunk/libs/math/test/compile_test/sf_jacobi_incl_test.cpp (contents, props changed)
   trunk/libs/math/test/compile_test/sf_owens_t_incl_test.cpp (contents, props changed)
   trunk/libs/math/test/test_airy.cpp (contents, props changed)
Text files modified:
   trunk/boost/math/special_functions.hpp | 1
   trunk/boost/math/special_functions/jacobi_elliptic.hpp | 2 +
   trunk/boost/math/special_functions/math_fwd.hpp | 41 ++++++++++++++++++++++++++++++++++++++++
   trunk/boost/math/tools/remez.hpp | 6 ++--
   trunk/libs/math/doc/sf_and_dist/graphs/sf_graphs.cpp | 23 +++++++++++++++++++++
   trunk/libs/math/doc/sf_and_dist/html/index.html | 9 +++++++
   trunk/libs/math/doc/sf_and_dist/html/index/s13.html | 20 +++++++++++++++++-
   trunk/libs/math/doc/sf_and_dist/html/index/s14.html | 4 +-
   trunk/libs/math/doc/sf_and_dist/html/index/s15.html | 4 +-
   trunk/libs/math/doc/sf_and_dist/html/index/s16.html | 4 +-
   trunk/libs/math/doc/sf_and_dist/html/index/s17.html | 36 +++++++++++++++++++++++++++++++++-
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/conventions.html | 2
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html | 2
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special.html | 7 ++++++
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint.html | 6 ++--
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel/sph_hankel.html | 6 ++--
   trunk/libs/math/doc/sf_and_dist/math.qbk | 9 ++++++++
   trunk/libs/math/test/Jamfile.v2 | 5 ++++
   trunk/libs/math/test/compile_test/instantiate.hpp | 16 +++++++++++++++
   trunk/libs/math/test/test_instances.hpp | 11 ++++++++++
   20 files changed, 191 insertions(+), 23 deletions(-)

Modified: trunk/boost/math/special_functions.hpp
==============================================================================
--- trunk/boost/math/special_functions.hpp (original)
+++ trunk/boost/math/special_functions.hpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -12,6 +12,7 @@
 #ifndef BOOST_MATH_SPECIAL_FUNCTIONS_HPP
 #define BOOST_MATH_SPECIAL_FUNCTIONS_HPP
 
+#include <boost/math/special_functions/airy.hpp>
 #include <boost/math/special_functions/acosh.hpp>
 #include <boost/math/special_functions/asinh.hpp>
 #include <boost/math/special_functions/atanh.hpp>

Added: trunk/boost/math/special_functions/airy.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/math/special_functions/airy.hpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,246 @@
+// Copyright John Maddock 2012.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_MATH_AIRY_HPP
+#define BOOST_MATH_AIRY_HPP
+
+#include <boost/math/special_functions/bessel.hpp>
+#include <boost/math/special_functions/cbrt.hpp>
+
+namespace boost{ namespace math{
+
+namespace detail{
+
+template <class T, class Policy>
+T airy_ai_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(x < 0)
+ {
+ T p = -x * sqrt(-x) * 2 / 3;
+ T v = T(1) / 3;
+ T j1 = boost::math::cyl_bessel_j(v, p, pol);
+ T j2 = boost::math::cyl_bessel_j(-v, p, pol);
+ T ai = sqrt(-x) * (j1 + j2) / 3;
+ //T bi = sqrt(-x / 3) * (j2 - j1);
+ return ai;
+ }
+ else if(fabs(x * x * x) / 6 < tools::epsilon<T>())
+ {
+ T tg = boost::math::tgamma(constants::twothirds<T>(), pol);
+ T ai = 1 / (pow(T(3), constants::twothirds<T>()) * tg);
+ //T bi = 1 / (sqrt(boost::math::cbrt(T(3))) * tg);
+ return ai;
+ }
+ else
+ {
+ T p = 2 * x * sqrt(x) / 3;
+ T v = T(1) / 3;
+ //T j1 = boost::math::cyl_bessel_i(-v, p, pol);
+ //T j2 = boost::math::cyl_bessel_i(v, p, pol);
+ //
+ // Note that although we can calculate ai from j1 and j2, the accuracy is horrible
+ // as we're subtracting two very large values, so use the Bessel K relation instead:
+ //
+ T ai = cyl_bessel_k(v, p, pol) * sqrt(x / 3) / boost::math::constants::pi<T>(); //sqrt(x) * (j1 - j2) / 3;
+ //T bi = sqrt(x / 3) * (j1 + j2);
+ return ai;
+ }
+}
+
+template <class T, class Policy>
+T airy_bi_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(x < 0)
+ {
+ T p = -x * sqrt(-x) * 2 / 3;
+ T v = T(1) / 3;
+ T j1 = boost::math::cyl_bessel_j(v, p, pol);
+ T j2 = boost::math::cyl_bessel_j(-v, p, pol);
+ //T ai = sqrt(-x) * (j1 + j2) / 3;
+ T bi = sqrt(-x / 3) * (j2 - j1);
+ return bi;
+ }
+ else if(fabs(x * x * x) / 6 < tools::epsilon<T>())
+ {
+ T tg = boost::math::tgamma(constants::twothirds<T>(), pol);
+ //T ai = 1 / (pow(T(3), constants::twothirds<T>()) * tg);
+ T bi = 1 / (sqrt(boost::math::cbrt(T(3))) * tg);
+ return bi;
+ }
+ else
+ {
+ T p = 2 * x * sqrt(x) / 3;
+ T v = T(1) / 3;
+ T j1 = boost::math::cyl_bessel_i(-v, p, pol);
+ T j2 = boost::math::cyl_bessel_i(v, p, pol);
+ T bi = sqrt(x / 3) * (j1 + j2);
+ return bi;
+ }
+}
+
+template <class T, class Policy>
+T airy_ai_prime_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(x < 0)
+ {
+ T p = -x * sqrt(-x) * 2 / 3;
+ T v = T(2) / 3;
+ T j1 = boost::math::cyl_bessel_j(v, p, pol);
+ T j2 = boost::math::cyl_bessel_j(-v, p, pol);
+ T aip = -x * (j1 - j2) / 3;
+ return aip;
+ }
+ else if(fabs(x * x) / 2 < tools::epsilon<T>())
+ {
+ T tg = boost::math::tgamma(constants::third<T>(), pol);
+ T aip = 1 / (boost::math::cbrt(T(3)) * tg);
+ return -aip;
+ }
+ else
+ {
+ T p = 2 * x * sqrt(x) / 3;
+ T v = T(2) / 3;
+ //T j1 = boost::math::cyl_bessel_i(-v, p, pol);
+ //T j2 = boost::math::cyl_bessel_i(v, p, pol);
+ //
+ // Note that although we can calculate ai from j1 and j2, the accuracy is horrible
+ // as we're subtracting two very large values, so use the Bessel K relation instead:
+ //
+ T aip = -cyl_bessel_k(v, p, pol) * x / (boost::math::constants::root_three<T>() * boost::math::constants::pi<T>());
+ return aip;
+ }
+}
+
+template <class T, class Policy>
+T airy_bi_prime_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(x < 0)
+ {
+ T p = -x * sqrt(-x) * 2 / 3;
+ T v = T(2) / 3;
+ T j1 = boost::math::cyl_bessel_j(v, p, pol);
+ T j2 = boost::math::cyl_bessel_j(-v, p, pol);
+ T aip = -x * (j1 + j2) / constants::root_three<T>();
+ return aip;
+ }
+ else if(fabs(x * x) / 2 < tools::epsilon<T>())
+ {
+ T tg = boost::math::tgamma(constants::third<T>(), pol);
+ T bip = sqrt(boost::math::cbrt(T(3))) / tg;
+ return bip;
+ }
+ else
+ {
+ T p = 2 * x * sqrt(x) / 3;
+ T v = T(2) / 3;
+ T j1 = boost::math::cyl_bessel_i(-v, p, pol);
+ T j2 = boost::math::cyl_bessel_i(v, p, pol);
+ T aip = x * (j1 + j2) / boost::math::constants::root_three<T>();
+ return aip;
+ }
+}
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type airy_ai(T x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::airy_ai_imp<value_type>(static_cast<value_type>(x), forwarding_policy()), "boost::math::airy<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type airy_ai(T x)
+{
+ return airy_ai(x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type airy_bi(T x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::airy_bi_imp<value_type>(static_cast<value_type>(x), forwarding_policy()), "boost::math::airy<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type airy_bi(T x)
+{
+ return airy_bi(x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type airy_ai_prime(T x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::airy_ai_prime_imp<value_type>(static_cast<value_type>(x), forwarding_policy()), "boost::math::airy<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type airy_ai_prime(T x)
+{
+ return airy_ai_prime(x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type airy_bi_prime(T x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::airy_bi_prime_imp<value_type>(static_cast<value_type>(x), forwarding_policy()), "boost::math::airy<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type airy_bi_prime(T x)
+{
+ return airy_bi_prime(x, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_AIRY_HPP

Modified: trunk/boost/math/special_functions/jacobi_elliptic.hpp
==============================================================================
--- trunk/boost/math/special_functions/jacobi_elliptic.hpp (original)
+++ trunk/boost/math/special_functions/jacobi_elliptic.hpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -8,6 +8,8 @@
 #define BOOST_MATH_JACOBI_ELLIPTIC_HPP
 
 #include <boost/math/tools/precision.hpp>
+#include <boost/math/tools/promotion.hpp>
+#include <boost/math/policies/error_handling.hpp>
 
 namespace boost{ namespace math{
 

Modified: trunk/boost/math/special_functions/math_fwd.hpp
==============================================================================
--- trunk/boost/math/special_functions/math_fwd.hpp (original)
+++ trunk/boost/math/special_functions/math_fwd.hpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -640,6 +640,30 @@
    std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_2(T1 v, T2 x);
 
    template <class T, class Policy>
+ typename tools::promote_args<T>::type airy_ai(T x, const Policy&);
+
+ template <class T>
+ typename tools::promote_args<T>::type airy_ai(T x);
+
+ template <class T, class Policy>
+ typename tools::promote_args<T>::type airy_bi(T x, const Policy&);
+
+ template <class T>
+ typename tools::promote_args<T>::type airy_bi(T x);
+
+ template <class T, class Policy>
+ typename tools::promote_args<T>::type airy_ai_prime(T x, const Policy&);
+
+ template <class T>
+ typename tools::promote_args<T>::type airy_ai_prime(T x);
+
+ template <class T, class Policy>
+ typename tools::promote_args<T>::type airy_bi_prime(T x, const Policy&);
+
+ template <class T>
+ typename tools::promote_args<T>::type airy_bi_prime(T x);
+
+ template <class T, class Policy>
    typename tools::promote_args<T>::type sin_pi(T x, const Policy&);
 
    template <class T>
@@ -1247,6 +1271,23 @@
    inline typename boost::math::tools::promote_args<T, U>::type jacobi_cs(T k, U theta)\
    { return boost::math::jacobi_cs(k, theta, Policy()); }\
    \
+ template <class T>\
+ inline typename boost::math::tools::promote_args<T>::type airy_ai(T x)\
+ { return boost::math::airy_ai(x, Policy()); }\
+ \
+ template <class T>\
+ inline typename boost::math::tools::promote_args<T>::type airy_bi(T x)\
+ { return boost::math::airy_bi(x, Policy()); }\
+ \
+ template <class T>\
+ inline typename boost::math::tools::promote_args<T>::type airy_ai_prime(T x)\
+ { return boost::math::airy_ai_prime(x, Policy()); }\
+ \
+ template <class T>\
+ inline typename boost::math::tools::promote_args<T>::type airy_bi_prime(T x)\
+ { return boost::math::airy_bi_prime(x, Policy()); }\
+ \
+
 
 
 

Modified: trunk/boost/math/tools/remez.hpp
==============================================================================
--- trunk/boost/math/tools/remez.hpp (original)
+++ trunk/boost/math/tools/remez.hpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -449,14 +449,14 @@
                A(i, j + offsetN) = x;
             if(j < orderD)
             {
- T mult = rel_error ? (b[i] - sign * fabs(b[i]) * Elast): (b[i] - sign * Elast);
+ T mult = rel_error ? T(b[i] - sign * fabs(b[i]) * Elast): T(b[i] - sign * Elast);
                A(i, j + offsetD) = -x * mult;
             }
             x *= x0;
          }
          // The last variable to be solved for is the error term,
          // sign changes with each control point:
- T E = rel_error ? sign * fabs(b[i]) : sign;
+ T E = rel_error ? T(sign * fabs(b[i])) : T(sign);
          A(i, unknowns - 1) = E;
          sign = -sign;
       }
@@ -478,7 +478,7 @@
       //
       solution = boost::math::tools::solve(A, b);
 
- err_err = (Elast != 0) ? fabs((fabs(solution[unknowns-1]) - fabs(Elast)) / fabs(Elast)) : 1;
+ err_err = (Elast != 0) ? T(fabs((fabs(solution[unknowns-1]) - fabs(Elast)) / fabs(Elast))) : T(1);
    }while(orderD && (convergence_count++ < 80) && (err_err > 0.001));
 
    //

Added: trunk/libs/math/doc/sf_and_dist/airy.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/airy.qbk 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,219 @@
+[/
+Copyright (c) 2012 John Maddock
+Use, modification and distribution are subject to the
+Boost Software License, Version 1.0. (See accompanying file
+LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+]
+
+[section:airy Airy Functions]
+
+[section:ai Airy Ai Function]
+
+[heading Synopsis]
+
+``
+ #include <boost/math/special_functions/airy.hpp>
+``
+
+ namespace boost { namespace math {
+
+ template <class T>
+ ``__sf_result`` airy_ai(T x);
+
+ template <class T, class Policy>
+ ``__sf_result`` airy_ai(T x, const Policy&);
+
+ }} // namespaces
+
+[heading Description]
+
+The function __airy_ai calculates the Airy function Ai which is the first solution to the differential equation:
+
+[equation airy]
+
+[optional_policy]
+
+The following graph illustrates how this function changes as /x/ changes: for negative /x/
+the function is cyclic, while for positive /x/ the value tends to zero:
+
+[graph airy_ai]
+
+[heading Accuracy]
+
+This function is implemented entirely in terms of the Bessel functions
+__cyl_bessel_j and __cyl_bessel_k - refer to those functions for detailed accuracy information.
+
+In general though, the relative error is low (less than 100 [epsilon]) for /x > 0/ while
+only the absolute error is low for /x < 0/.
+
+[heading Testing]
+
+Since this function is implemented in terms of other special functions, there are only a few
+basic sanity checks, using test values from [@http:functions.wolfram.com functions.wolfram.com].
+
+[heading Implementation]
+
+This function is implemented in terms of the Bessel functions using the relations:
+
+[equation airy_ai]
+
+[endsect]
+
+[section:bi Airy Bi Function]
+
+[heading Synopsis]
+
+``
+ #include <boost/math/special_functions/airy.hpp>
+``
+
+ namespace boost { namespace math {
+
+ template <class T>
+ ``__sf_result`` airy_bi(T x);
+
+ template <class T, class Policy>
+ ``__sf_result`` airy_bi(T x, const Policy&);
+
+ }} // namespaces
+
+[heading Description]
+
+The function __airy_bi calculates the Airy function Bi which is the second solution to the differential equation:
+
+[equation airy]
+
+[optional_policy]
+
+The following graph illustrates how this function changes as /x/ changes: for negative /x/
+the function is cyclic, while for positive /x/ the value tends to infinity:
+
+[graph airy_bi]
+
+[heading Accuracy]
+
+This function is implemented entirely in terms of the Bessel functions
+__cyl_bessel_i and __cyl_bessel_j - refer to those functions for detailed accuracy information.
+
+In general though, the relative error is low (less than 100 [epsilon]) for /x > 0/ while
+only the absolute error is low for /x < 0/.
+
+[heading Testing]
+
+Since this function is implemented in terms of other special functions, there are only a few
+basic sanity checks, using test values from [@http:functions.wolfram.com functions.wolfram.com].
+
+[heading Implementation]
+
+This function is implemented in terms of the Bessel functions using the relations:
+
+[equation airy_bi]
+
+[endsect]
+
+[section:aip Airy Ai' Function]
+
+[heading Synopsis]
+
+``
+ #include <boost/math/special_functions/airy.hpp>
+``
+
+ namespace boost { namespace math {
+
+ template <class T>
+ ``__sf_result`` airy_ai_prime(T x);
+
+ template <class T, class Policy>
+ ``__sf_result`` airy_ai_prime(T x, const Policy&);
+
+ }} // namespaces
+
+[heading Description]
+
+The function __airy_ai_prime calculates the Airy function Ai' which is the derivative of the first solution to the differential equation:
+
+[equation airy]
+
+[optional_policy]
+
+The following graph illustrates how this function changes as /x/ changes: for negative /x/
+the function is cyclic, while for positive /x/ the value tends to zero:
+
+[graph airy_aip]
+
+[heading Accuracy]
+
+This function is implemented entirely in terms of the Bessel functions
+__cyl_bessel_j and __cyl_bessel_k - refer to those functions for detailed accuracy information.
+
+In general though, the relative error is low (less than 100 [epsilon]) for /x > 0/ while
+only the absolute error is low for /x < 0/.
+
+[heading Testing]
+
+Since this function is implemented in terms of other special functions, there are only a few
+basic sanity checks, using test values from [@http:functions.wolfram.com functions.wolfram.com].
+
+[heading Implementation]
+
+This function is implemented in terms of the Bessel functions using the relations:
+
+[equation airy_aip]
+
+[endsect]
+
+[section:bip Airy Bi' Function]
+
+[heading Synopsis]
+
+``
+ #include <boost/math/special_functions/airy.hpp>
+``
+
+ namespace boost { namespace math {
+
+ template <class T>
+ ``__sf_result`` airy_bi_prime(T x);
+
+ template <class T, class Policy>
+ ``__sf_result`` airy_bi_prime(T x, const Policy&);
+
+ }} // namespaces
+
+[heading Description]
+
+The function __airy_bi_prime calculates the Airy function Bi' which is the derivative of the second solution to the differential equation:
+
+[equation airy]
+
+[optional_policy]
+
+The following graph illustrates how this function changes as /x/ changes: for negative /x/
+the function is cyclic, while for positive /x/ the value tends to infinity:
+
+[graph airy_bi]
+
+[heading Accuracy]
+
+This function is implemented entirely in terms of the Bessel functions
+__cyl_bessel_i and __cyl_bessel_j - refer to those functions for detailed accuracy information.
+
+In general though, the relative error is low (less than 100 [epsilon]) for /x > 0/ while
+only the absolute error is low for /x < 0/.
+
+[heading Testing]
+
+Since this function is implemented in terms of other special functions, there are only a few
+basic sanity checks, using test values from [@http:functions.wolfram.com functions.wolfram.com].
+
+[heading Implementation]
+
+This function is implemented in terms of the Bessel functions using the relations:
+
+[equation airy_bip]
+
+[endsect]
+
+[endsect]
+

Added: trunk/libs/math/doc/sf_and_dist/equations/airy.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/airy.mml 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,76 @@
+<?xml version='1.0'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN'
+ 'http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd'
+ [<!ENTITY mathml 'http://www.w3.org/1998/Math/MathML'>]>
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head><title>airy</title>
+<!-- MathML created with MathCast Equation Editor version 0.89 -->
+</head>
+<body>
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <mfrac>
+ <mrow>
+ <msup>
+ <mo>&#x2146;</mo>
+ <mn>2</mn>
+ </msup>
+ <mi>w</mi>
+ </mrow>
+ <mrow>
+ <mo>&#x2146;</mo>
+ <msup>
+ <mi>z</mi>
+ <mn>2</mn>
+ </msup>
+ </mrow>
+ </mfrac>
+ <mo>=</mo>
+ <mi>z</mi>
+ <mi>w</mi>
+ <mspace width="1em"/>
+ <mo>;</mo>
+ <mspace width="1em"/>
+ <mi>w</mi>
+ <mo>=</mo>
+ <mi>A</mi>
+ <mi>i</mi>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ <mo>,</mo>
+ <mi>B</mi>
+ <mi>i</mi>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ <mo>,</mo>
+ <mi>A</mi>
+ <mi>i</mi>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ <msup>
+ <mi>&#x2147;</mi>
+ <mrow>
+ <mo>&#x00B1;</mo>
+ <mfrac>
+ <mrow>
+ <mn>2</mn>
+ <mi>&#x03C0;</mi>
+ <mi>&#x2148;</mi>
+ </mrow>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msup>
+ </mrow>
+ </mfenced>
+ </mrow>
+</math>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/equations/airy.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/equations/airy.svg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_ai.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/airy_ai.mml 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,187 @@
+<?xml version='1.0'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN'
+ 'http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd'
+ [<!ENTITY mathml 'http://www.w3.org/1998/Math/MathML'>]>
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head><title>airy_ai</title>
+<!-- MathML created with MathCast Equation Editor version 0.89 -->
+</head>
+<body>
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <mtable>
+ <mtr>
+ <mtd>
+ <mi>A</mi>
+ <mi>i</mi>
+ <mfenced>
+ <mrow>
+ <mn>0</mn>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <mfrac>
+ <mn>1</mn>
+ <mrow>
+ <msup>
+ <mn>3</mn>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msup>
+ <mi>&#x0393;</mi>
+ <mfenced>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfrac>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>A</mi>
+ <mi>i</mi>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <msup>
+ <mi>&#x03C0;</mi>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mn>1</mn>
+ </mrow>
+ </msup>
+ <msqrt>
+ <mrow>
+ <mfrac>
+ <mi>z</mi>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msqrt>
+ <msub>
+ <mi>K</mi>
+ <mrow>
+ <mo>&#x00B1;</mo>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>;</mo>
+ </mtd>
+ <mtd>
+ <mi>&#x03B6;</mi>
+ <mo>=</mo>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ <msup>
+ <mi>z</mi>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msup>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>A</mi>
+ <mi>i</mi>
+ <mfenced>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <mfenced>
+ <mrow>
+ <mfrac>
+ <mrow>
+ <msqrt>
+ <mi>z</mi>
+ </msqrt>
+ </mrow>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </mfenced>
+ <mfenced>
+ <mrow>
+ <msub>
+ <mi>J</mi>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ <mo>+</mo>
+ <msub>
+ <mi>J</mi>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfenced>
+ </mtd>
+ </mtr>
+ </mtable>
+ </mrow>
+</math>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_ai.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_ai.svg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_aip.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/airy_aip.mml 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,179 @@
+<?xml version='1.0'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN'
+ 'http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd'
+ [<!ENTITY mathml 'http://www.w3.org/1998/Math/MathML'>]>
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head><title>airy_aip</title>
+<!-- MathML created with MathCast Equation Editor version 0.89 -->
+</head>
+<body>
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <mtable>
+ <mtr>
+ <mtd>
+ <mi>A</mi>
+ <mi>i</mi>
+ <mo>&#x2032;</mo>
+ <mfenced>
+ <mrow>
+ <mn>0</mn>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <mo>&#x2212;</mo>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mrow>
+ <msup>
+ <mn>3</mn>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msup>
+ <mi>&#x0393;</mi>
+ <mfenced>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfrac>
+ </mrow>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>A</mi>
+ <mi>i</mi>
+ <mo>&#x2032;</mo>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <mfrac>
+ <mi>z</mi>
+ <mrow>
+ <mi>&#x03C0;</mi>
+ <msqrt>
+ <mn>3</mn>
+ </msqrt>
+ </mrow>
+ </mfrac>
+ <msub>
+ <mi>K</mi>
+ <mrow>
+ <mrow>
+ <mo>&#x00B1;</mo>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>;</mo>
+ </mtd>
+ <mtd>
+ <mi>&#x03B6;</mi>
+ <mo>=</mo>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ <msup>
+ <mi>z</mi>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msup>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>A</mi>
+ <mi>i</mi>
+ <mo>&#x2032;</mo>
+ <mfenced>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <mfrac>
+ <mi>z</mi>
+ <mn>3</mn>
+ </mfrac>
+ <mfenced>
+ <mrow>
+ <msub>
+ <mi>J</mi>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ <mo>&#x2212;</mo>
+ <msub>
+ <mi>J</mi>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfenced>
+ </mtd>
+ </mtr>
+ </mtable>
+ </mrow>
+</math>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_aip.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_aip.svg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_bi.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/airy_bi.mml 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,195 @@
+<?xml version='1.0'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN'
+ 'http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd'
+ [<!ENTITY mathml 'http://www.w3.org/1998/Math/MathML'>]>
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head><title>airy_bi</title>
+<!-- MathML created with MathCast Equation Editor version 0.89 -->
+</head>
+<body>
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <mtable>
+ <mtr>
+ <mtd>
+ <mi>B</mi>
+ <mi>i</mi>
+ <mfenced>
+ <mrow>
+ <mn>0</mn>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <mfrac>
+ <mn>1</mn>
+ <mrow>
+ <msup>
+ <mn>3</mn>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mn>6</mn>
+ </mfrac>
+ </mrow>
+ </msup>
+ <mi>&#x0393;</mi>
+ <mfenced>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfrac>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>B</mi>
+ <mi>i</mi>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <msqrt>
+ <mrow>
+ <mfrac>
+ <mi>z</mi>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msqrt>
+ <mfenced>
+ <mrow>
+ <msub>
+ <mi>I</mi>
+ <mrow>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ <mo>+</mo>
+ <msub>
+ <mi>I</mi>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>;</mo>
+ </mtd>
+ <mtd>
+ <mi>&#x03B6;</mi>
+ <mo>=</mo>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ <msup>
+ <mi>z</mi>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msup>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>B</mi>
+ <mi>i</mi>
+ <mfenced>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <msqrt>
+ <mrow>
+ <mfrac>
+ <mi>z</mi>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msqrt>
+ <mfenced>
+ <mrow>
+ <msub>
+ <mi>J</mi>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ <mo>&#x2212;</mo>
+ <msub>
+ <mi>J</mi>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfenced>
+ </mtd>
+ </mtr>
+ </mtable>
+ </mrow>
+</math>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_bi.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_bi.svg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_bip.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/airy_bip.mml 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,195 @@
+<?xml version='1.0'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN'
+ 'http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd'
+ [<!ENTITY mathml 'http://www.w3.org/1998/Math/MathML'>]>
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head><title>airy_bip</title>
+<!-- MathML created with MathCast Equation Editor version 0.89 -->
+</head>
+<body>
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <mtable>
+ <mtr>
+ <mtd>
+ <mi>B</mi>
+ <mi>i</mi>
+ <mo>&#x2032;</mo>
+ <mfenced>
+ <mrow>
+ <mn>0</mn>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <mrow>
+ <mfrac>
+ <msup>
+ <mn>3</mn>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mn>6</mn>
+ </mfrac>
+ </mrow>
+ </msup>
+ <mrow>
+ <mi>&#x0393;</mi>
+ <mfenced>
+ <mrow>
+ <mfrac>
+ <mn>1</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfrac>
+ </mrow>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>B</mi>
+ <mi>i</mi>
+ <mo>&#x2032;</mo>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <mfrac>
+ <mi>z</mi>
+ <msqrt>
+ <mn>3</mn>
+ </msqrt>
+ </mfrac>
+ <mfenced>
+ <mrow>
+ <msub>
+ <mi>I</mi>
+ <mrow>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ <mo>+</mo>
+ <msub>
+ <mi>I</mi>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>;</mo>
+ </mtd>
+ <mtd>
+ <mi>&#x03B6;</mi>
+ <mo>=</mo>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ <msup>
+ <mi>z</mi>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msup>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>B</mi>
+ <mi>i</mi>
+ <mo>&#x2032;</mo>
+ <mfenced>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mtd>
+ <mtd>
+ <mo>=</mo>
+ </mtd>
+ <mtd>
+ <mfrac>
+ <mi>z</mi>
+ <msqrt>
+ <mn>3</mn>
+ </msqrt>
+ </mfrac>
+ <mfenced>
+ <mrow>
+ <msub>
+ <mi>J</mi>
+ <mrow>
+ <mo>&#x2212;</mo>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ <mo>+</mo>
+ <msub>
+ <mi>J</mi>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mn>3</mn>
+ </mfrac>
+ </mrow>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>&#x03B6;</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mfenced>
+ </mtd>
+ </mtr>
+ </mtable>
+ </mrow>
+</math>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_bip.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/equations/airy_bip.svg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/graphs/airy_ai.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/graphs/airy_ai.svg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/graphs/airy_aip.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/graphs/airy_aip.svg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/graphs/airy_bi.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/graphs/airy_bi.svg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/graphs/airy_bip.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/math/doc/sf_and_dist/graphs/airy_bip.svg
==============================================================================
Binary file. No diff available.

Modified: trunk/libs/math/doc/sf_and_dist/graphs/sf_graphs.cpp
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/graphs/sf_graphs.cpp (original)
+++ trunk/libs/math/doc/sf_and_dist/graphs/sf_graphs.cpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -248,7 +248,7 @@
    double (*f2i)(int, double);
    double (*f3)(double, double, double);
    double (*f4)(double, double, double, double);
-
+#if 0
    f = boost::math::zeta;
    plot.add(f, 1 + find_end_point(f, 0.1, 40.0, false, 1.0), 10, "");
    plot.add(f, -20, 1 + find_end_point(f, -0.1, -40.0, false, 1.0), "");
@@ -675,6 +675,27 @@
    plot.add(boost::bind(f2, 0.95, _1), -2.5, 2.5, "k=0.95");
    plot.add(boost::bind(f2, 1, _1), -2.5, 2.5, "k=1");
    plot.plot("Jacobi Elliptic sd", "jacobi_sd.svg", "k", "jacobi_sd(k, phi)");
+#endif
+
+ f = boost::math::airy_ai;
+ plot.clear();
+ plot.add(f, -20, 20, "");
+ plot.plot("Ai", "airy_ai.svg", "z", "airy_ai(z)");
+
+ f = boost::math::airy_bi;
+ plot.clear();
+ plot.add(f, -20, 3, "");
+ plot.plot("Bi", "airy_bi.svg", "z", "airy_bi(z)");
+
+ f = boost::math::airy_ai_prime;
+ plot.clear();
+ plot.add(f, -20, 20, "");
+ plot.plot("Ai'", "airy_aip.svg", "z", "airy_ai_prime(z)");
+
+ f = boost::math::airy_bi_prime;
+ plot.clear();
+ plot.add(f, -20, 3, "");
+ plot.plot("Bi'", "airy_bip.svg", "z", "airy_bi_prime(z)");
 
    return 0;
 }

Modified: trunk/libs/math/doc/sf_and_dist/html/index.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/index.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/index.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -294,6 +294,13 @@
 <dt><span class="section"><a href="math_toolkit/special/hankel/sph_hankel.html">Spherical Hankel
         Functions</a></span></dt>
 </dl></dd>
+<dt><span class="section">Airy Functions</span></dt>
+<dd><dl>
+<dt><span class="section">Airy Ai Function</span></dt>
+<dt><span class="section">Airy Bi Function</span></dt>
+<dt><span class="section">Airy Ai' Function</span></dt>
+<dt><span class="section">Airy Bi' Function</span></dt>
+</dl></dd>
 <dt><span class="section">Elliptic Integrals</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="math_toolkit/special/ellint/ellint_intro.html">Elliptic
@@ -570,7 +577,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: May 17, 2012 at 10:07:59 GMT</small></p></td>
+<td align="left"><p><small>Last revised: May 20, 2012 at 15:54:08 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/math/doc/sf_and_dist/html/index/s13.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/index/s13.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/index/s13.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -22,9 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../math_toolkit/status/credits.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s14.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id1299305">
+<div class="section id1318710">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1299305"></a>Function Index</h2></div></div></div>
+<a name="id1318710"></a>Function Index</h2></div></div></div>
 <p><a class="link" href="s13.html#idx_id_0">A</a> <a class="link" href="s13.html#idx_id_1">B</a> <a class="link" href="s13.html#idx_id_2">C</a> <a class="link" href="s13.html#idx_id_3">D</a> <a class="link" href="s13.html#idx_id_4">E</a> <a class="link" href="s13.html#idx_id_5">F</a> <a class="link" href="s13.html#idx_id_6">G</a> <a class="link" href="s13.html#idx_id_7">H</a> <a class="link" href="s13.html#idx_id_8">I</a> <a class="link" href="s13.html#idx_id_9">J</a> <a class="link" href="s13.html#idx_id_10">K</a> <a class="link" href="s13.html#idx_id_11">L</a> <a class="link" href="s13.html#idx_id_12">M</a> <a class="link" href="s13.html#idx_id_13">N</a> <a class="link" href="s13.html#idx_id_14">O</a> <a class="link" href="s13.html#idx_id_15">P</a> <a class="link" href="s13.html#idx_id_16">Q</a> <a class="link" href="s13.html#idx_id_17">R</a> <a class="link" href="s13.html#idx_id_18">S</a> <a class="link" href="s13.html#idx_id_19">T</a> <a class="link" href="s13.html#idx_id_20">U</a> <a class="link" href=
"s13.html#idx_id_21">V</a> <a class="link" href="s13.html#idx_id_22">W</a> <a class="link" href="s13.html#idx_id_23">Z</a></p>
 <div class="variablelist"><dl>
 <dt>
@@ -57,6 +57,22 @@
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_ai</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/ai.html" title="Airy Ai Function"><span class="index-entry-level-1">Airy Ai Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_ai_prime</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/aip.html" title="Airy Ai' Function"><span class="index-entry-level-1">Airy Ai' Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_bi</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/bi.html" title="Airy Bi Function"><span class="index-entry-level-1">Airy Bi Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_bi_prime</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/bip.html" title="Airy Bi' Function"><span class="index-entry-level-1">Airy Bi' Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">asinh</span></p>
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/special/inv_hyper/asinh.html" title="asinh"><span class="index-entry-level-1">asinh</span></a></strong></span></p></li>

Modified: trunk/libs/math/doc/sf_and_dist/html/index/s14.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/index/s14.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/index/s14.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -22,9 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s13.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s15.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id1318008">
+<div class="section id1333507">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1318008"></a>Class Index</h2></div></div></div>
+<a name="id1333507"></a>Class Index</h2></div></div></div>
 <p><a class="link" href="s14.html#idx_id_25">B</a> <a class="link" href="s14.html#idx_id_26">C</a> <a class="link" href="s14.html#idx_id_27">D</a> <a class="link" href="s14.html#idx_id_28">E</a> <a class="link" href="s14.html#idx_id_29">F</a> <a class="link" href="s14.html#idx_id_30">G</a> <a class="link" href="s14.html#idx_id_31">H</a> <a class="link" href="s14.html#idx_id_32">I</a> <a class="link" href="s14.html#idx_id_35">L</a> <a class="link" href="s14.html#idx_id_36">M</a> <a class="link" href="s14.html#idx_id_37">N</a> <a class="link" href="s14.html#idx_id_39">P</a> <a class="link" href="s14.html#idx_id_41">R</a> <a class="link" href="s14.html#idx_id_42">S</a> <a class="link" href="s14.html#idx_id_43">T</a> <a class="link" href="s14.html#idx_id_44">U</a> <a class="link" href="s14.html#idx_id_46">W</a></p>
 <div class="variablelist"><dl>
 <dt>

Modified: trunk/libs/math/doc/sf_and_dist/html/index/s15.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/index/s15.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/index/s15.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -22,9 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s14.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s16.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id1318949">
+<div class="section id1336087">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1318949"></a>Typedef Index</h2></div></div></div>
+<a name="id1336087"></a>Typedef Index</h2></div></div></div>
 <p><a class="link" href="s15.html#idx_id_48">A</a> <a class="link" href="s15.html#idx_id_49">B</a> <a class="link" href="s15.html#idx_id_50">C</a> <a class="link" href="s15.html#idx_id_51">D</a> <a class="link" href="s15.html#idx_id_52">E</a> <a class="link" href="s15.html#idx_id_53">F</a> <a class="link" href="s15.html#idx_id_54">G</a> <a class="link" href="s15.html#idx_id_55">H</a> <a class="link" href="s15.html#idx_id_56">I</a> <a class="link" href="s15.html#idx_id_59">L</a> <a class="link" href="s15.html#idx_id_61">N</a> <a class="link" href="s15.html#idx_id_62">O</a> <a class="link" href="s15.html#idx_id_63">P</a> <a class="link" href="s15.html#idx_id_65">R</a> <a class="link" href="s15.html#idx_id_66">S</a> <a class="link" href="s15.html#idx_id_67">T</a> <a class="link" href="s15.html#idx_id_68">U</a> <a class="link" href="s15.html#idx_id_69">V</a> <a class="link" href="s15.html#idx_id_70">W</a></p>
 <div class="variablelist"><dl>
 <dt>

Modified: trunk/libs/math/doc/sf_and_dist/html/index/s16.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/index/s16.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/index/s16.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -22,9 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s15.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s17.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id1321312">
+<div class="section id1339542">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1321312"></a>Macro Index</h2></div></div></div>
+<a name="id1339542"></a>Macro Index</h2></div></div></div>
 <p><a class="link" href="s16.html#idx_id_73">B</a> <a class="link" href="s16.html#idx_id_77">F</a></p>
 <div class="variablelist"><dl>
 <dt>

Modified: trunk/libs/math/doc/sf_and_dist/html/index/s17.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/index/s17.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/index/s17.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -21,9 +21,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s16.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a>
 </div>
-<div class="section id1322539">
+<div class="section id1340769">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1322539"></a>Index</h2></div></div></div>
+<a name="id1340769"></a>Index</h2></div></div></div>
 <p><a class="link" href="s17.html#idx_id_96">A</a> <a class="link" href="s17.html#idx_id_97">B</a> <a class="link" href="s17.html#idx_id_98">C</a> <a class="link" href="s17.html#idx_id_99">D</a> <a class="link" href="s17.html#idx_id_100">E</a> <a class="link" href="s17.html#idx_id_101">F</a> <a class="link" href="s17.html#idx_id_102">G</a> <a class="link" href="s17.html#idx_id_103">H</a> <a class="link" href="s17.html#idx_id_104">I</a> <a class="link" href="s17.html#idx_id_105">J</a> <a class="link" href="s17.html#idx_id_106">K</a> <a class="link" href="s17.html#idx_id_107">L</a> <a class="link" href="s17.html#idx_id_108">M</a> <a class="link" href="s17.html#idx_id_109">N</a> <a class="link" href="s17.html#idx_id_110">O</a> <a class="link" href="s17.html#idx_id_111">P</a> <a class="link" href="s17.html#idx_id_112">Q</a> <a class="link" href="s17.html#idx_id_113">R</a> <a class="link" href="s17.html#idx_id_114">S</a> <a class="link" href="s17.html#idx_id_115">T</a> <a class="link" href="s17.html#idx_id_116">
U</a> <a class="link" href="s17.html#idx_id_117">V</a> <a class="link" href="s17.html#idx_id_118">W</a> <a class="link" href="s17.html#idx_id_119">Z</a></p>
 <div class="variablelist"><dl>
 <dt>
@@ -63,6 +63,38 @@
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Airy Ai Function</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/ai.html" title="Airy Ai Function"><span class="index-entry-level-1">airy_ai</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Airy Ai' Function</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/aip.html" title="Airy Ai' Function"><span class="index-entry-level-1">airy_ai_prime</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Airy Bi Function</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/bi.html" title="Airy Bi Function"><span class="index-entry-level-1">airy_bi</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Airy Bi' Function</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/bip.html" title="Airy Bi' Function"><span class="index-entry-level-1">airy_bi_prime</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_ai</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/ai.html" title="Airy Ai Function"><span class="index-entry-level-1">Airy Ai Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_ai_prime</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/aip.html" title="Airy Ai' Function"><span class="index-entry-level-1">Airy Ai' Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_bi</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/bi.html" title="Airy Bi Function"><span class="index-entry-level-1">Airy Bi Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_bi_prime</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/special/airy/bip.html" title="Airy Bi' Function"><span class="index-entry-level-1">Airy Bi' Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">asinh</span></p>
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/special/inv_hyper/asinh.html" title="asinh"><span class="index-entry-level-1">asinh</span></a></strong></span></p></li>

Modified: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/conventions.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/conventions.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/conventions.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -27,7 +27,7 @@
 <a name="math_toolkit.main_overview.conventions"></a><a class="link" href="conventions.html" title="Document Conventions">Document Conventions</a>
 </h3></div></div></div>
 <p>
- <a class="indexterm" name="id831761"></a>
+ <a class="indexterm" name="id850964"></a>
       </p>
 <p>
         This documentation aims to use of the following naming and formatting conventions.

Modified: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -27,7 +27,7 @@
 <a name="math_toolkit.main_overview.navigation"></a><a class="link" href="navigation.html" title="Navigation">Navigation</a>
 </h3></div></div></div>
 <p>
- <a class="indexterm" name="id831631"></a>
+ <a class="indexterm" name="id850835"></a>
       </p>
 <p>
         Boost.Math documentation is provided in both HTML and PDF formats.

Modified: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -97,6 +97,13 @@
 <dt><span class="section"><a href="special/hankel/sph_hankel.html">Spherical Hankel
         Functions</a></span></dt>
 </dl></dd>
+<dt><span class="section">Airy Functions</span></dt>
+<dd><dl>
+<dt><span class="section">Airy Ai Function</span></dt>
+<dt><span class="section">Airy Bi Function</span></dt>
+<dt><span class="section">Airy Ai' Function</span></dt>
+<dt><span class="section">Airy Bi' Function</span></dt>
+</dl></dd>
 <dt><span class="section">Elliptic Integrals</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="special/ellint/ellint_intro.html">Elliptic

Added: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Functions</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Special Functions">
+<link rel="prev" href="hankel/sph_hankel.html" title="Spherical Hankel Functions">
+<link rel="next" href="airy/ai.html" title="Airy Ai Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="hankel/sph_hankel.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="airy/ai.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_special_airy">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.special.airy"></a><a class="link" href="airy.html" title="Airy Functions">Airy Functions</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Airy Ai Function</span></dt>
+<dt><span class="section">Airy Bi Function</span></dt>
+<dt><span class="section">Airy Ai' Function</span></dt>
+<dt><span class="section">Airy Bi' Function</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010 John Maddock, Paul A. Bristow, Hubert Holin, Xiaogang Zhang, Bruno
+ Lalande, Johan R&#229;de, Gautam Sewani, Thijs van den Berg and Benjamin Sobotta<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="hankel/sph_hankel.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="airy/ai.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/ai.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/ai.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Ai Function</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../airy.html" title="Airy Functions">
+<link rel="prev" href="../airy.html" title="Airy Functions">
+<link rel="next" href="bi.html" title="Airy Bi Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../airy.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bi.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_special_airy_ai">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.special.airy.ai"></a><a class="link" href="ai.html" title="Airy Ai Function">Airy Ai Function</a>
+</h4></div></div></div>
+<h6>
+<a name="math_toolkit.special.airy.ai.h0"></a>
+ <span><a name="math_toolkit.special.airy.ai.synopsis"></a></span><a class="link" href="ai.html#math_toolkit.special.airy.ai.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">airy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_ai</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">&gt;</span>
+ <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_ai</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&amp;);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h6>
+<a name="math_toolkit.special.airy.ai.h1"></a>
+ <span><a name="math_toolkit.special.airy.ai.description"></a></span><a class="link" href="ai.html#math_toolkit.special.airy.ai.description">Description</a>
+ </h6>
+<p>
+ The function <a class="link" href="ai.html" title="Airy Ai Function">airy_ai</a>
+ calculates the Airy function Ai which is the first solution to the differential
+ equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/airy.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Policies">Policy</a> argument is
+ optional and can be used to control the behaviour of the function: how
+ it handles errors, what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Policies">policy documentation for more details</a>.
+ </p>
+<p>
+ The following graph illustrates how this function changes as <span class="emphasis"><em>x</em></span>
+ changes: for negative <span class="emphasis"><em>x</em></span> the function is cyclic, while
+ for positive <span class="emphasis"><em>x</em></span> the value tends to zero:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/airy_ai.png" align="middle"></span>
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.ai.h2"></a>
+ <span><a name="math_toolkit.special.airy.ai.accuracy"></a></span><a class="link" href="ai.html#math_toolkit.special.airy.ai.accuracy">Accuracy</a>
+ </h6>
+<p>
+ This function is implemented entirely in terms of the Bessel functions
+ <a class="link" href="../bessel/bessel.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_k</a>
+ - refer to those functions for detailed accuracy information.
+ </p>
+<p>
+ In general though, the relative error is low (less than 100 &#949;) for <span class="emphasis"><em>x
+ &gt; 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x
+ &lt; 0</em></span>.
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.ai.h3"></a>
+ <span><a name="math_toolkit.special.airy.ai.testing"></a></span><a class="link" href="ai.html#math_toolkit.special.airy.ai.testing">Testing</a>
+ </h6>
+<p>
+ Since this function is implemented in terms of other special functions,
+ there are only a few basic sanity checks, using test values from functions.wolfram.com.
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.ai.h4"></a>
+ <span><a name="math_toolkit.special.airy.ai.implementation"></a></span><a class="link" href="ai.html#math_toolkit.special.airy.ai.implementation">Implementation</a>
+ </h6>
+<p>
+ This function is implemented in terms of the Bessel functions using the
+ relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/airy_ai.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010 John Maddock, Paul A. Bristow, Hubert Holin, Xiaogang Zhang, Bruno
+ Lalande, Johan R&#229;de, Gautam Sewani, Thijs van den Berg and Benjamin Sobotta<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../airy.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bi.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/aip.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/aip.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Ai' Function</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../airy.html" title="Airy Functions">
+<link rel="prev" href="bi.html" title="Airy Bi Function">
+<link rel="next" href="bip.html" title="Airy Bi' Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bi.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bip.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_special_airy_aip">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.special.airy.aip"></a><a class="link" href="aip.html" title="Airy Ai' Function">Airy Ai' Function</a>
+</h4></div></div></div>
+<h6>
+<a name="math_toolkit.special.airy.aip.h0"></a>
+ <span><a name="math_toolkit.special.airy.aip.synopsis"></a></span><a class="link" href="aip.html#math_toolkit.special.airy.aip.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">airy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_ai_prime</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">&gt;</span>
+ <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_ai_prime</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&amp;);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h6>
+<a name="math_toolkit.special.airy.aip.h1"></a>
+ <span><a name="math_toolkit.special.airy.aip.description"></a></span><a class="link" href="aip.html#math_toolkit.special.airy.aip.description">Description</a>
+ </h6>
+<p>
+ The function <a class="link" href="aip.html" title="Airy Ai' Function">airy_ai_prime</a>
+ calculates the Airy function Ai' which is the derivative of the first solution
+ to the differential equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/airy.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Policies">Policy</a> argument is
+ optional and can be used to control the behaviour of the function: how
+ it handles errors, what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Policies">policy documentation for more details</a>.
+ </p>
+<p>
+ The following graph illustrates how this function changes as <span class="emphasis"><em>x</em></span>
+ changes: for negative <span class="emphasis"><em>x</em></span> the function is cyclic, while
+ for positive <span class="emphasis"><em>x</em></span> the value tends to zero:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/airy_aip.png" align="middle"></span>
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.aip.h2"></a>
+ <span><a name="math_toolkit.special.airy.aip.accuracy"></a></span><a class="link" href="aip.html#math_toolkit.special.airy.aip.accuracy">Accuracy</a>
+ </h6>
+<p>
+ This function is implemented entirely in terms of the Bessel functions
+ <a class="link" href="../bessel/bessel.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_k</a>
+ - refer to those functions for detailed accuracy information.
+ </p>
+<p>
+ In general though, the relative error is low (less than 100 &#949;) for <span class="emphasis"><em>x
+ &gt; 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x
+ &lt; 0</em></span>.
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.aip.h3"></a>
+ <span><a name="math_toolkit.special.airy.aip.testing"></a></span><a class="link" href="aip.html#math_toolkit.special.airy.aip.testing">Testing</a>
+ </h6>
+<p>
+ Since this function is implemented in terms of other special functions,
+ there are only a few basic sanity checks, using test values from functions.wolfram.com.
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.aip.h4"></a>
+ <span><a name="math_toolkit.special.airy.aip.implementation"></a></span><a class="link" href="aip.html#math_toolkit.special.airy.aip.implementation">Implementation</a>
+ </h6>
+<p>
+ This function is implemented in terms of the Bessel functions using the
+ relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/airy_aip.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010 John Maddock, Paul A. Bristow, Hubert Holin, Xiaogang Zhang, Bruno
+ Lalande, Johan R&#229;de, Gautam Sewani, Thijs van den Berg and Benjamin Sobotta<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bi.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bip.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/bi.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/bi.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Bi Function</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../airy.html" title="Airy Functions">
+<link rel="prev" href="ai.html" title="Airy Ai Function">
+<link rel="next" href="aip.html" title="Airy Ai' Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ai.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="aip.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_special_airy_bi">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.special.airy.bi"></a><a class="link" href="bi.html" title="Airy Bi Function">Airy Bi Function</a>
+</h4></div></div></div>
+<h6>
+<a name="math_toolkit.special.airy.bi.h0"></a>
+ <span><a name="math_toolkit.special.airy.bi.synopsis"></a></span><a class="link" href="bi.html#math_toolkit.special.airy.bi.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">airy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_bi</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">&gt;</span>
+ <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_bi</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&amp;);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h6>
+<a name="math_toolkit.special.airy.bi.h1"></a>
+ <span><a name="math_toolkit.special.airy.bi.description"></a></span><a class="link" href="bi.html#math_toolkit.special.airy.bi.description">Description</a>
+ </h6>
+<p>
+ The function <a class="link" href="bi.html" title="Airy Bi Function">airy_bi</a>
+ calculates the Airy function Bi which is the second solution to the differential
+ equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/airy.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Policies">Policy</a> argument is
+ optional and can be used to control the behaviour of the function: how
+ it handles errors, what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Policies">policy documentation for more details</a>.
+ </p>
+<p>
+ The following graph illustrates how this function changes as <span class="emphasis"><em>x</em></span>
+ changes: for negative <span class="emphasis"><em>x</em></span> the function is cyclic, while
+ for positive <span class="emphasis"><em>x</em></span> the value tends to infinity:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/airy_bi.png" align="middle"></span>
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.bi.h2"></a>
+ <span><a name="math_toolkit.special.airy.bi.accuracy"></a></span><a class="link" href="bi.html#math_toolkit.special.airy.bi.accuracy">Accuracy</a>
+ </h6>
+<p>
+ This function is implemented entirely in terms of the Bessel functions
+ <a class="link" href="../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a>
+ and <a class="link" href="../bessel/bessel.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ - refer to those functions for detailed accuracy information.
+ </p>
+<p>
+ In general though, the relative error is low (less than 100 &#949;) for <span class="emphasis"><em>x
+ &gt; 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x
+ &lt; 0</em></span>.
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.bi.h3"></a>
+ <span><a name="math_toolkit.special.airy.bi.testing"></a></span><a class="link" href="bi.html#math_toolkit.special.airy.bi.testing">Testing</a>
+ </h6>
+<p>
+ Since this function is implemented in terms of other special functions,
+ there are only a few basic sanity checks, using test values from functions.wolfram.com.
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.bi.h4"></a>
+ <span><a name="math_toolkit.special.airy.bi.implementation"></a></span><a class="link" href="bi.html#math_toolkit.special.airy.bi.implementation">Implementation</a>
+ </h6>
+<p>
+ This function is implemented in terms of the Bessel functions using the
+ relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/airy_bi.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010 John Maddock, Paul A. Bristow, Hubert Holin, Xiaogang Zhang, Bruno
+ Lalande, Johan R&#229;de, Gautam Sewani, Thijs van den Berg and Benjamin Sobotta<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ai.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="aip.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/bip.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/airy/bip.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Bi' Function</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../airy.html" title="Airy Functions">
+<link rel="prev" href="aip.html" title="Airy Ai' Function">
+<link rel="next" href="../ellint.html" title="Elliptic Integrals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="aip.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../ellint.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_special_airy_bip">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.special.airy.bip"></a><a class="link" href="bip.html" title="Airy Bi' Function">Airy Bi' Function</a>
+</h4></div></div></div>
+<h6>
+<a name="math_toolkit.special.airy.bip.h0"></a>
+ <span><a name="math_toolkit.special.airy.bip.synopsis"></a></span><a class="link" href="bip.html#math_toolkit.special.airy.bip.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">airy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_bi_prime</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">&gt;</span>
+ <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_bi_prime</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&amp;);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h6>
+<a name="math_toolkit.special.airy.bip.h1"></a>
+ <span><a name="math_toolkit.special.airy.bip.description"></a></span><a class="link" href="bip.html#math_toolkit.special.airy.bip.description">Description</a>
+ </h6>
+<p>
+ The function <a class="link" href="bip.html" title="Airy Bi' Function">airy_bi_prime</a>
+ calculates the Airy function Bi' which is the derivative of the second
+ solution to the differential equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/airy.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Policies">Policy</a> argument is
+ optional and can be used to control the behaviour of the function: how
+ it handles errors, what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Policies">policy documentation for more details</a>.
+ </p>
+<p>
+ The following graph illustrates how this function changes as <span class="emphasis"><em>x</em></span>
+ changes: for negative <span class="emphasis"><em>x</em></span> the function is cyclic, while
+ for positive <span class="emphasis"><em>x</em></span> the value tends to infinity:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/airy_bi.png" align="middle"></span>
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.bip.h2"></a>
+ <span><a name="math_toolkit.special.airy.bip.accuracy"></a></span><a class="link" href="bip.html#math_toolkit.special.airy.bip.accuracy">Accuracy</a>
+ </h6>
+<p>
+ This function is implemented entirely in terms of the Bessel functions
+ <a class="link" href="../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a>
+ and <a class="link" href="../bessel/bessel.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ - refer to those functions for detailed accuracy information.
+ </p>
+<p>
+ In general though, the relative error is low (less than 100 &#949;) for <span class="emphasis"><em>x
+ &gt; 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x
+ &lt; 0</em></span>.
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.bip.h3"></a>
+ <span><a name="math_toolkit.special.airy.bip.testing"></a></span><a class="link" href="bip.html#math_toolkit.special.airy.bip.testing">Testing</a>
+ </h6>
+<p>
+ Since this function is implemented in terms of other special functions,
+ there are only a few basic sanity checks, using test values from functions.wolfram.com.
+ </p>
+<h6>
+<a name="math_toolkit.special.airy.bip.h4"></a>
+ <span><a name="math_toolkit.special.airy.bip.implementation"></a></span><a class="link" href="bip.html#math_toolkit.special.airy.bip.implementation">Implementation</a>
+ </h6>
+<p>
+ This function is implemented in terms of the Bessel functions using the
+ relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/airy_bip.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010 John Maddock, Paul A. Bristow, Hubert Holin, Xiaogang Zhang, Bruno
+ Lalande, Johan R&#229;de, Gautam Sewani, Thijs van den Berg and Benjamin Sobotta<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="aip.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../ellint.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
 <link rel="home" href="../../index.html" title="Math Toolkit">
 <link rel="up" href="../special.html" title="Special Functions">
-<link rel="prev" href="hankel/sph_hankel.html" title="Spherical Hankel Functions">
+<link rel="prev" href="airy/bip.html" title="Airy Bi' Function">
 <link rel="next" href="ellint/ellint_intro.html" title="Elliptic Integral Overview">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="hankel/sph_hankel.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ellint/ellint_intro.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="airy/bip.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ellint/ellint_intro.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section math_toolkit_special_ellint">
 <div class="titlepage"><div><div><h3 class="title">
@@ -50,7 +50,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="hankel/sph_hankel.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ellint/ellint_intro.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="airy/bip.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ellint/ellint_intro.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel/sph_hankel.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel/sph_hankel.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel/sph_hankel.html 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../../index.html" title="Math Toolkit">
 <link rel="up" href="../hankel.html" title="Hankel Functions">
 <link rel="prev" href="cyl_hankel.html" title="Cyclic Hankel Functions">
-<link rel="next" href="../ellint.html" title="Elliptic Integrals">
+<link rel="next" href="../airy.html" title="Airy Functions">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="cyl_hankel.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../hankel.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../ellint.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="cyl_hankel.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../hankel.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../airy.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section math_toolkit_special_hankel_sph_hankel">
 <div class="titlepage"><div><div><h4 class="title">
@@ -116,7 +116,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="cyl_hankel.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../hankel.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../ellint.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="cyl_hankel.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../hankel.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../airy.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/math/doc/sf_and_dist/math.qbk
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/math.qbk (original)
+++ trunk/libs/math/doc/sf_and_dist/math.qbk 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -157,6 +157,12 @@
 [def __sph_hankel_1 [link math_toolkit.special.hankel.sph_hankel sph_hankel_1]]
 [def __sph_hankel_2 [link math_toolkit.special.hankel.sph_hankel sph_hankel_2]]
 
+[/Airy Functions]
+[def __airy_ai [link math_toolkit.special.airy.ai airy_ai]]
+[def __airy_bi [link math_toolkit.special.airy.bi airy_bi]]
+[def __airy_bi_prime [link math_toolkit.special.airy.bip airy_bi_prime]]
+[def __airy_ai_prime [link math_toolkit.special.airy.aip airy_ai_prime]]
+
 [/Jacobi Elliptic Functions]
 [def __jacobi_elliptic [link math_toolkit.special.jacobi.jacobi_elliptic jacobi_elliptic]]
 
@@ -433,6 +439,9 @@
 [/Hankel functions]
 [include hankel.qbk]
 
+[/Airy Functions]
+[include airy.qbk]
+
 [section:ellint Elliptic Integrals]
 [include ellint_introduction.qbk]
 [include ellint_carlson.qbk]

Modified: trunk/libs/math/test/Jamfile.v2
==============================================================================
--- trunk/libs/math/test/Jamfile.v2 (original)
+++ trunk/libs/math/test/Jamfile.v2 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -77,6 +77,7 @@
 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 ;
+run test_airy.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_bernoulli.cpp ../../test/build//boost_test_exec_monitor ;
 run test_constants.cpp ../../test/build//boost_test_exec_monitor ;
 run test_print_info_on_type.cpp ;
@@ -776,6 +777,10 @@
 run compile_test/sf_trunc_incl_test.cpp compile_test/main.cpp ;
 run compile_test/sf_zeta_incl_test.cpp compile_test/main.cpp ;
 run compile_test/std_real_concept_check.cpp ;
+run compile_test/sf_airy_incl_test.cpp compile_test/main.cpp ;
+run compile_test/sf_hankel_incl_test.cpp compile_test/main.cpp ;
+run compile_test/sf_jacobi_incl_test.cpp compile_test/main.cpp ;
+run compile_test/sf_owens_t_incl_test.cpp compile_test/main.cpp ;
 compile compile_test/test_traits.cpp ;
 compile compile_test/tools_config_inc_test.cpp ;
 compile compile_test/tools_fraction_inc_test.cpp ;

Modified: trunk/libs/math/test/compile_test/instantiate.hpp
==============================================================================
--- trunk/libs/math/test/compile_test/instantiate.hpp (original)
+++ trunk/libs/math/test/compile_test/instantiate.hpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -255,6 +255,10 @@
    boost::math::sph_hankel_2(v1, v2);
    boost::math::sph_hankel_2(i, v2);
 #endif
+ boost::math::airy_ai(v1);
+ boost::math::airy_bi(v1);
+ boost::math::airy_ai_prime(v1);
+ boost::math::airy_bi_prime(v1);
    boost::math::expint(v1);
    boost::math::expint(i);
    boost::math::expint(i, v2);
@@ -397,6 +401,10 @@
    boost::math::sph_hankel_2(v1, v2, pol);
    boost::math::sph_hankel_2(i, v2, pol);
 #endif
+ boost::math::airy_ai(v1, pol);
+ boost::math::airy_bi(v1, pol);
+ boost::math::airy_ai_prime(v1, pol);
+ boost::math::airy_bi_prime(v1, pol);
    boost::math::expint(v1, pol);
    boost::math::expint(i, pol);
    boost::math::expint(i, v2, pol);
@@ -550,6 +558,10 @@
    test::sph_hankel_2(v1, v2);
    test::sph_hankel_2(i, v2);
 #endif
+ boost::math::airy_ai(i);
+ boost::math::airy_bi(i);
+ boost::math::airy_ai_prime(i);
+ boost::math::airy_bi_prime(i);
    test::expint(v1);
    test::expint(i);
    test::expint(i, v2);
@@ -961,6 +973,10 @@
    test::sph_bessel(i, 1);
    test::sph_neumann(i, lr);
    test::sph_neumann(i, i);
+ test::airy_ai(i);
+ test::airy_bi(i);
+ test::airy_ai_prime(i);
+ test::airy_bi_prime(i);
    test::owens_t(fr, dr);
    test::owens_t(i, s);
 #endif

Added: trunk/libs/math/test/compile_test/sf_airy_incl_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/math/test/compile_test/sf_airy_incl_test.cpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,42 @@
+// Copyright John Maddock 2012.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// Basic sanity check that header <boost/math/special_functions/bessel.hpp>
+// #includes all the files that it needs to.
+//
+#include <boost/math/special_functions/airy.hpp>
+//
+// Note this header includes no other headers, this is
+// important if this test is to be meaningful:
+//
+#include "test_compile_result.hpp"
+
+void compile_and_link_test()
+{
+ check_result<float>(boost::math::airy_ai<float>(f));
+ check_result<double>(boost::math::airy_ai<double>(d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::airy_ai<long double>(l));
+#endif
+
+ check_result<float>(boost::math::airy_bi<float>(f));
+ check_result<double>(boost::math::airy_bi<double>(d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::airy_bi<long double>(l));
+#endif
+
+ check_result<float>(boost::math::airy_ai_prime<float>(f));
+ check_result<double>(boost::math::airy_ai_prime<double>(d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::airy_ai_prime<long double>(l));
+#endif
+
+ check_result<float>(boost::math::airy_bi_prime<float>(f));
+ check_result<double>(boost::math::airy_bi_prime<double>(d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::airy_bi_prime<long double>(l));
+#endif
+
+}

Added: trunk/libs/math/test/compile_test/sf_hankel_incl_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/math/test/compile_test/sf_hankel_incl_test.cpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,46 @@
+// Copyright John Maddock 2012.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// Basic sanity check that header <boost/math/special_functions/bessel.hpp>
+// #includes all the files that it needs to.
+//
+#include <boost/math/special_functions/hankel.hpp>
+//
+// Note this header includes no other headers, this is
+// important if this test is to be meaningful:
+//
+#include "test_compile_result.hpp"
+
+inline void check_result_imp(std::complex<float>, std::complex<float>){}
+inline void check_result_imp(std::complex<double>, std::complex<double>){}
+inline void check_result_imp(std::complex<long double>, std::complex<long double>){}
+
+void compile_and_link_test()
+{
+ check_result<std::complex<float> >(boost::math::cyl_hankel_1<float>(f, f));
+ check_result<std::complex<double> >(boost::math::cyl_hankel_1<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<std::complex<long double> >(boost::math::cyl_hankel_1<long double>(l, l));
+#endif
+
+ check_result<std::complex<float> >(boost::math::cyl_hankel_2<float>(f, f));
+ check_result<std::complex<double> >(boost::math::cyl_hankel_2<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<std::complex<long double> >(boost::math::cyl_hankel_2<long double>(l, l));
+#endif
+
+ check_result<std::complex<float> >(boost::math::sph_hankel_1<float>(f, f));
+ check_result<std::complex<double> >(boost::math::sph_hankel_1<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<std::complex<long double> >(boost::math::sph_hankel_1<long double>(l, l));
+#endif
+
+ check_result<std::complex<float> >(boost::math::sph_hankel_2<float>(f, f));
+ check_result<std::complex<double> >(boost::math::sph_hankel_2<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<std::complex<long double> >(boost::math::sph_hankel_2<long double>(l, l));
+#endif
+
+}

Added: trunk/libs/math/test/compile_test/sf_jacobi_incl_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/math/test/compile_test/sf_jacobi_incl_test.cpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,96 @@
+// Copyright John Maddock 2012.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// Basic sanity check that header <boost/math/special_functions/bessel.hpp>
+// #includes all the files that it needs to.
+//
+#include <boost/math/special_functions/jacobi_elliptic.hpp>
+//
+// Note this header includes no other headers, this is
+// important if this test is to be meaningful:
+//
+#include "test_compile_result.hpp"
+
+void compile_and_link_test()
+{
+ check_result<float>(boost::math::jacobi_elliptic<float>(f, f, static_cast<float*>(0), static_cast<float*>(0)));
+ check_result<double>(boost::math::jacobi_elliptic<double>(d, d, static_cast<double*>(0), static_cast<double*>(0)));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_elliptic<long double>(l, l, static_cast<long double*>(0), static_cast<long double*>(0)));
+#endif
+
+ check_result<float>(boost::math::jacobi_sn<float>(f, f));
+ check_result<double>(boost::math::jacobi_sn<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_sn<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_cn<float>(f, f));
+ check_result<double>(boost::math::jacobi_cn<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_cn<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_dn<float>(f, f));
+ check_result<double>(boost::math::jacobi_dn<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_dn<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_cd<float>(f, f));
+ check_result<double>(boost::math::jacobi_cd<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_cd<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_dc<float>(f, f));
+ check_result<double>(boost::math::jacobi_dc<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_dc<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_ns<float>(f, f));
+ check_result<double>(boost::math::jacobi_ns<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_ns<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_sd<float>(f, f));
+ check_result<double>(boost::math::jacobi_sd<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_sd<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_ds<float>(f, f));
+ check_result<double>(boost::math::jacobi_ds<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_ds<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_nc<float>(f, f));
+ check_result<double>(boost::math::jacobi_nc<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_nc<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_nd<float>(f, f));
+ check_result<double>(boost::math::jacobi_nd<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_nd<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_sc<float>(f, f));
+ check_result<double>(boost::math::jacobi_sc<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_sc<long double>(l, l));
+#endif
+
+ check_result<float>(boost::math::jacobi_cs<float>(f, f));
+ check_result<double>(boost::math::jacobi_cs<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::jacobi_cs<long double>(l, l));
+#endif
+
+}

Added: trunk/libs/math/test/compile_test/sf_owens_t_incl_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/math/test/compile_test/sf_owens_t_incl_test.cpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,24 @@
+// Copyright John Maddock 2012.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// Basic sanity check that header <boost/math/special_functions/bessel.hpp>
+// #includes all the files that it needs to.
+//
+#include <boost/math/special_functions/owens_t.hpp>
+//
+// Note this header includes no other headers, this is
+// important if this test is to be meaningful:
+//
+#include "test_compile_result.hpp"
+
+void compile_and_link_test()
+{
+ check_result<float>(boost::math::owens_t<float>(f, f));
+ check_result<double>(boost::math::owens_t<double>(d, d));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ check_result<long double>(boost::math::owens_t<long double>(l, l));
+#endif
+
+}

Added: trunk/libs/math/test/test_airy.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/math/test/test_airy.cpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -0,0 +1,85 @@
+// Copyright John Maddock 2012
+// Use, modification and distribution are subject to the
+// 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>
+
+#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/math_fwd.hpp>
+#include <boost/math/concepts/real_concept.hpp>
+#include <boost/array.hpp>
+
+#ifdef _MSC_VER
+# pragma warning(disable : 4756 4127) // overflow in constant arithmetic
+// Constants are too big for float case, but this doesn't matter for test.
+#endif
+
+//
+// DESCRIPTION:
+// ~~~~~~~~~~~~
+//
+// This file tests the Airy functions.
+// These are basically just a few spot tests, since the underlying implementation
+// is the same as for the Bessel functions.
+//
+template <class T>
+void test_airy(T, const char* name)
+{
+ std::cout << "Testing type " << name << std::endl;
+
+ static const boost::array<boost::array<T, 5>, 8> data =
+ {{
+ // Values are x, Ai, Bi, Ai', Bi'.
+ // Calculated from functions.wolfram.com.
+ {{ 0, static_cast<T>(0.355028053887817239260063186004183176397979174199177240583327L), static_cast<T>(0.614926627446000735150922369093613553594728188648596505040879L), static_cast<T>(-0.258819403792806798405183560189203963479091138354934582210002L), static_cast<T>(0.448288357353826357914823710398828390866226799212262061082809L) }},
+ {{ 2, static_cast<T>(0.0349241304232743791353220807918076097610602138975832071886699L), static_cast<T>(3.29809499997821471028060442522345242200397596340362078768292L), static_cast<T>(-0.0530903844336536317039991858787034912485609900458779926304030L), static_cast<T>(4.10068204993288988938203407917793529439024461377513711983771L) }},
+ {{ 3.5, static_cast<T>(0.00258409878698963496327714478330027845019631096464789073425468L), static_cast<T>(33.0555067546114794142573129819217946861266278143724855010951L), static_cast<T>(-0.00500441396795258283203024967883836790716278377542974739809987L), static_cast<T>(59.1643195813609870345742121795224602529063343063320217229383L) }},
+ {{ 30.5, static_cast<T>(2.04253461666926015963302258449952681287194929082634196439857e-50L), static_cast<T>(1.41092256201712698413071856671990267572381736486242769613348e48L), static_cast<T>(-1.12969466271996376602221721397236452019046628449363103927812e-49L), static_cast<T>(7.78046629440950280615411694840600772185863288897663300007879e48L) }},
+ {{ -2, static_cast<T>(0.227407428201685575991924436037873799460772225417096716495790L), static_cast<T>(-0.412302587956398488083234054611461042034534834472404728823877L), static_cast<T>(0.618259020741691041406264291332475282915777945124146942159898L), static_cast<T>(0.278795166921169522685097569410983241403000593451631000239732L) }},
+ {{ -3.5, static_cast<T>(-0.375533823140431911934396951580170239543268576378264063902563L), static_cast<T>(0.168939837481058611843442769540943269911562243926304070915824L), static_cast<T>(-0.343443433454048146287937374098698857094194220958713294264017L), static_cast<T>(-0.693116284907288801752443612670580462699702668014978495343697L) }},
+ {{ -30.25, static_cast<T>(-0.236900428491559731119806902381433570300271552218956227857722L), static_cast<T>(0.0418614989839147441219283537268101850442118139150748075124111L), static_cast<T>(-0.232197332372689274917364138870840123428255785603863926579897L), static_cast<T>(-1.30261375952554697768880873095691151213006925411329957440342L) }},
+ {{ -300.5, static_cast<T>(-0.117584304761702008955433457721670950077867326839023449546057L), static_cast<T>(0.0673518035440918806545676478730240310819758211028871823560384), static_cast<T>(-1.16763702262473888724431076711846459336993902544926162874376L), static_cast<T>(-2.03826035550300900666977975504950803669545593208969273694133L) }},
+ }};
+
+ T tol = boost::math::tools::epsilon<T>() * 800;
+ for(unsigned i = 0; i < data.size(); ++i)
+ {
+ BOOST_CHECK_CLOSE_FRACTION(data[i][1], boost::math::airy_ai(data[i][0]), tol);
+ if(boost::math::isfinite(data[i][2]))
+ BOOST_CHECK_CLOSE_FRACTION(data[i][2], boost::math::airy_bi(data[i][0]), tol);
+ BOOST_CHECK_CLOSE_FRACTION(data[i][3], boost::math::airy_ai_prime(data[i][0]), tol);
+ if(boost::math::isfinite(data[i][4]))
+ BOOST_CHECK_CLOSE_FRACTION(data[i][4], boost::math::airy_bi_prime(data[i][0]), tol);
+ }
+}
+
+
+int test_main(int, char* [])
+{
+#ifdef TEST_GSL
+ gsl_set_error_handler_off();
+#endif
+ BOOST_MATH_CONTROL_FP;
+
+#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS
+ test_airy(0.1F, "float");
+#endif
+ test_airy(0.1, "double");
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ test_airy(0.1L, "long double");
+ test_airy(boost::math::concepts::real_concept(0), "real_concept");
+#else
+ std::cout << "<note>The long double tests have been disabled on this platform "
+ "either because the long double overloads of the usual math functions are "
+ "not available at all, or because they are too inaccurate for these tests "
+ "to pass.</note>" << std::cout;
+#endif
+ return 0;
+}
+
+
+
+

Modified: trunk/libs/math/test/test_instances.hpp
==============================================================================
--- trunk/libs/math/test/test_instances.hpp (original)
+++ trunk/libs/math/test/test_instances.hpp 2012-05-21 05:45:48 EDT (Mon, 21 May 2012)
@@ -354,6 +354,17 @@
 
    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);
 
+ // Airy Functions:
+ template tools::promote_args<BOOST_MATH_TEST_TYPE>::type airy_ai(BOOST_MATH_TEST_TYPE x, const policies::policy<>&);
+ template tools::promote_args<BOOST_MATH_TEST_TYPE>::type airy_ai(BOOST_MATH_TEST_TYPE x);
+ template tools::promote_args<BOOST_MATH_TEST_TYPE>::type airy_bi(BOOST_MATH_TEST_TYPE x, const policies::policy<>&);
+ template tools::promote_args<BOOST_MATH_TEST_TYPE>::type airy_bi(BOOST_MATH_TEST_TYPE x);
+ template tools::promote_args<BOOST_MATH_TEST_TYPE>::type airy_ai_prime(BOOST_MATH_TEST_TYPE x, const policies::policy<>&);
+ template tools::promote_args<BOOST_MATH_TEST_TYPE>::type airy_ai_prime(BOOST_MATH_TEST_TYPE x);
+ template tools::promote_args<BOOST_MATH_TEST_TYPE>::type airy_bi_prime(BOOST_MATH_TEST_TYPE x, const policies::policy<>&);
+ template tools::promote_args<BOOST_MATH_TEST_TYPE>::type airy_bi_prime(BOOST_MATH_TEST_TYPE x);
+
+ // Exponential Integral
    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);


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