Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r78245 - in trunk: boost/math boost/math/policies boost/math/special_functions libs/math/doc/sf_and_dist libs/math/doc/sf_and_dist/equations 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/dist/dist_ref/dists 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/bessel libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel libs/math/test
From: john_at_[hidden]
Date: 2012-04-28 13:59:41


Author: johnmaddock
Date: 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
New Revision: 78245
URL: http://svn.boost.org/trac/boost/changeset/78245

Log:
Add first draft of Hankel functions.
Add some Math lib docs that were previously missing.
Added:
   trunk/boost/math/special_functions/hankel.hpp (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel1.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel1.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel1.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel2.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel2.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel2.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel3.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel3.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel3.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel4.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel4.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel4.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel5.mml (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel5.png (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/equations/hankel5.svg (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/hankel.qbk (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/skew_normal_dist.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/conventions.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/hints.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel/
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel/cyl_hankel.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel/sph_hankel.html (contents, props changed)
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/owens_t.html (contents, props changed)
   trunk/libs/math/test/test_hankel.cpp (contents, props changed)
Text files modified:
   trunk/boost/math/policies/error_handling.hpp | 34 ++++++++++++++++++++++++++++++++++
   trunk/boost/math/special_functions.hpp | 1 +
   trunk/boost/math/special_functions/math_fwd.hpp | 13 +++++++++++++
   trunk/libs/math/doc/sf_and_dist/html/index.html | 9 ++++++++-
   trunk/libs/math/doc/sf_and_dist/html/index/s13.html | 4 ++--
   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 | 4 ++--
   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/bessel/sph_bessel.html | 6 +++---
   trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint.html | 6 +++---
   trunk/libs/math/doc/sf_and_dist/math.qbk | 8 ++++++++
   trunk/libs/math/test/Jamfile.v2 | 1 +
   15 files changed, 89 insertions(+), 18 deletions(-)

Modified: trunk/boost/math/policies/error_handling.hpp
==============================================================================
--- trunk/boost/math/policies/error_handling.hpp (original)
+++ trunk/boost/math/policies/error_handling.hpp 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -12,6 +12,7 @@
 #include <iomanip>
 #include <string>
 #include <cerrno>
+#include <complex>
 #include <boost/config/no_tr1/cmath.hpp>
 #include <stdexcept>
 #include <boost/math/tools/config.hpp>
@@ -576,6 +577,15 @@
    return false;
 }
 template <class R, class T, class Policy>
+inline bool check_overflow(std::complex<T> val, R* result, const char* function, const Policy& pol)
+{
+ typedef typename R::value_type r_type;
+ r_type re, im;
+ bool r = check_overflow<r_type>(val.real(), &re, function, pol) || check_overflow<r_type>(val.imag(), &im, function, pol);
+ *result = R(re, im);
+ return r;
+}
+template <class R, class T, class Policy>
 inline bool check_underflow(T val, R* result, const char* function, const Policy& pol)
 {
    if((val != 0) && (static_cast<R>(val) == 0))
@@ -586,6 +596,15 @@
    return false;
 }
 template <class R, class T, class Policy>
+inline bool check_underflow(std::complex<T> val, R* result, const char* function, const Policy& pol)
+{
+ typedef typename R::value_type r_type;
+ r_type re, im;
+ bool r = check_underflow<r_type>(val.real(), &re, function, pol) || check_underflow<r_type>(val.imag(), &im, function, pol);
+ *result = R(re, im);
+ return r;
+}
+template <class R, class T, class Policy>
 inline bool check_denorm(T val, R* result, const char* function, const Policy& pol)
 {
    BOOST_MATH_STD_USING
@@ -596,14 +615,29 @@
    }
    return false;
 }
+template <class R, class T, class Policy>
+inline bool check_denorm(std::complex<T> val, R* result, const char* function, const Policy& pol)
+{
+ typedef typename R::value_type r_type;
+ r_type re, im;
+ bool r = check_denorm<r_type>(val.real(), &re, function, pol) || check_denorm<r_type>(val.imag(), &im, function, pol);
+ *result = R(re, im);
+ return r;
+}
 
 // Default instantiations with ignore_error policy.
 template <class R, class T>
 inline bool check_overflow(T /* val */, R* /* result */, const char* /* function */, const overflow_error<ignore_error>&){ return false; }
 template <class R, class T>
+inline bool check_overflow(std::complex<T> /* val */, R* /* result */, const char* /* function */, const overflow_error<ignore_error>&){ return false; }
+template <class R, class T>
 inline bool check_underflow(T /* val */, R* /* result */, const char* /* function */, const underflow_error<ignore_error>&){ return false; }
 template <class R, class T>
+inline bool check_underflow(std::complex<T> /* val */, R* /* result */, const char* /* function */, const underflow_error<ignore_error>&){ return false; }
+template <class R, class T>
 inline bool check_denorm(T /* val */, R* /* result*/, const char* /* function */, const denorm_error<ignore_error>&){ return false; }
+template <class R, class T>
+inline bool check_denorm(std::complex<T> /* val */, R* /* result*/, const char* /* function */, const denorm_error<ignore_error>&){ return false; }
 
 } // namespace detail
 

Modified: trunk/boost/math/special_functions.hpp
==============================================================================
--- trunk/boost/math/special_functions.hpp (original)
+++ trunk/boost/math/special_functions.hpp 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -56,5 +56,6 @@
 #include <boost/math/special_functions/pow.hpp>
 #include <boost/math/special_functions/next.hpp>
 #include <boost/math/special_functions/owens_t.hpp>
+#include <boost/math/special_functions/hankel.hpp>
 
 #endif // BOOST_MATH_SPECIAL_FUNCTIONS_HPP

Added: trunk/boost/math/special_functions/hankel.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/math/special_functions/hankel.hpp 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,164 @@
+// 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_HANKEL_HPP
+#define BOOST_MATH_HANKEL_HPP
+
+#include <boost/math/special_functions/bessel.hpp>
+
+namespace boost{ namespace math{
+
+namespace detail{
+
+template <class T, class Policy>
+std::complex<T> hankel_imp(T v, T x, const bessel_no_int_tag&, const Policy& pol, int sign)
+{
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::cyl_hankel_h1<%1%>(%1%,%1%)";
+
+ if(x < 0)
+ {
+ bool isint_v = floor(v) == v;
+ T j, y;
+ bessel_jy(v, -x, &j, &y, need_j | need_y, pol);
+ std::complex<T> cx(x), cv(v);
+ std::complex<T> j_result, y_result;
+ if(isint_v)
+ {
+ int s = (iround(j) & 1) ? -1 : 1;
+ j_result = j * s;
+ y_result = T(s) * (y - (2 / constants::pi<T>()) * (log(-x) - log(cx)) * j);
+ }
+ else
+ {
+ j_result = pow(cx, v) * pow(-cx, -v) * j;
+ T p1 = pow(-x, v);
+ std::complex<T> p2 = pow(cx, v);
+ y_result = p1 * y / p2
+ + (p2 / p1 - p1 / p2) * j / tan(constants::pi<T>() * v);
+ }
+ // multiply y_result by i:
+ y_result = std::complex<T>(-sign * y_result.imag(), sign * y_result.real());
+ return j_result + y_result;
+ }
+
+ if(x == 0)
+ {
+ if(v == 0)
+ {
+ // J is 1, Y is -INF
+ return std::complex<T>(1, sign * -policies::raise_overflow_error<T>(function, 0, pol));
+ }
+ else
+ {
+ // At least one of J and Y is complex infinity:
+ return std::complex<T>(policies::raise_overflow_error<T>(function, 0, pol), sign * policies::raise_overflow_error<T>(function, 0, pol));
+ }
+ }
+
+ T j, y;
+ bessel_jy(v, x, &j, &y, need_j | need_y, pol);
+ return std::complex<T>(j, sign * y);
+}
+
+template <class T, class Policy>
+std::complex<T> hankel_imp(int v, T x, const bessel_int_tag&, const Policy& pol, int sign);
+
+template <class T, class Policy>
+inline std::complex<T> hankel_imp(T v, T x, const bessel_maybe_int_tag&, const Policy& pol, int sign)
+{
+ BOOST_MATH_STD_USING // ADL of std names.
+ int ival = detail::iconv(v, pol);
+ if(0 == v - ival)
+ {
+ return hankel_imp(ival, x, bessel_int_tag(), pol, sign);
+ }
+ return hankel_imp(v, x, bessel_no_int_tag(), pol, sign);
+}
+
+template <class T, class Policy>
+inline std::complex<T> hankel_imp(int v, T x, const bessel_int_tag&, const Policy& pol, int sign)
+{
+ BOOST_MATH_STD_USING
+ if((std::abs(v < 200)) && (x > 0))
+ return std::complex<T>(bessel_jn(v, x, pol), sign * bessel_yn(v, x, pol));
+ return hankel_imp(static_cast<T>(v), x, bessel_no_int_tag(), pol, sign);
+}
+
+template <class T, class Policy>
+inline std::complex<T> sph_hankel_imp(T v, T x, const Policy& pol, int sign)
+{
+ BOOST_MATH_STD_USING
+ return constants::root_half_pi<T>() * hankel_imp(v + 0.5f, x, bessel_no_int_tag(), pol, sign) / sqrt(std::complex<T>(x));
+}
+
+} // namespace detail
+
+template <class T1, class T2, class Policy>
+inline std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_h1(T1 v, T2 x, const Policy& pol)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename detail::bessel_traits<T1, T2, Policy>::optimisation_tag tag_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<std::complex<result_type>, Policy>(detail::hankel_imp<value_type>(v, static_cast<value_type>(x), tag_type(), pol, 1), "boost::math::cyl_hankel_h1<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_h1(T1 v, T2 x)
+{
+ return cyl_hankel_h1(v, x, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_h2(T1 v, T2 x, const Policy& pol)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename detail::bessel_traits<T1, T2, Policy>::optimisation_tag tag_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<std::complex<result_type>, Policy>(detail::hankel_imp<value_type>(v, static_cast<value_type>(x), tag_type(), pol, -1), "boost::math::cyl_hankel_h1<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_h2(T1 v, T2 x)
+{
+ return cyl_hankel_h2(v, x, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_h1(T1 v, T2 x, const Policy& pol)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<std::complex<result_type>, Policy>(detail::sph_hankel_imp<value_type>(static_cast<value_type>(v), static_cast<value_type>(x), pol, 1), "boost::math::sph_hankel_h1<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_h1(T1 v, T2 x)
+{
+ return sph_hankel_h1(v, x, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_h2(T1 v, T2 x, const Policy& pol)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<std::complex<result_type>, Policy>(detail::sph_hankel_imp<value_type>(static_cast<value_type>(v), static_cast<value_type>(x), pol, -1), "boost::math::sph_hankel_h1<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_h2(T1 v, T2 x)
+{
+ return sph_hankel_h2(v, x, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_HANKEL_HPP
\ No newline at end of file

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-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -28,6 +28,7 @@
 #include <boost/math/policies/policy.hpp>
 #include <boost/mpl/comparison.hpp>
 #include <boost/config/no_tr1/complex.hpp>
+#include <complex>
 
 #define BOOST_NO_MACRO_EXPAND /**/
 
@@ -614,6 +615,18 @@
    template <class T>
    typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann(unsigned v, T x);
 
+ template <class T1, class T2, class Policy>
+ std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_h1(T1 v, T2 x, const Policy& pol);
+
+ template <class T1, class T2>
+ std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_h1(T1 v, T2 x);
+
+ template <class T1, class T2, class Policy>
+ std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_h2(T1 v, T2 x, const Policy& pol);
+
+ template <class T1, class T2>
+ std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_h2(T1 v, T2 x);
+
    template <class T, class Policy>
    typename tools::promote_args<T>::type sin_pi(T x, const Policy&);
 

Added: trunk/libs/math/doc/sf_and_dist/equations/hankel1.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/hankel1.mml 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,57 @@
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <mrow>
+ <msub>
+ <mi>J</mi>
+ <mi>&#x03BD;</mi>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>z</mi>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mspace width="1em"/>
+ <mo>=</mo>
+ <mspace width="1em"/>
+ <mrow>
+ <msup>
+ <mrow>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>z</mi>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mi>&#x03BD;</mi>
+ </msup>
+ <mo>&#x2062;</mo>
+ <msup>
+ <mi>z</mi>
+ <mrow>
+ <mo>-</mo>
+ <mi>&#x03BD;</mi>
+ </mrow>
+ </msup>
+ <mo>&#x2062;</mo>
+ <mrow>
+ <msub>
+ <mi>J</mi>
+ <mi>&#x03BD;</mi>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mrow>
+ </mrow>
+</math>
+

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

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

Added: trunk/libs/math/doc/sf_and_dist/equations/hankel2.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/hankel2.mml 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,152 @@
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <mrow>
+ <mrow>
+ <msub>
+ <mi>Y</mi>
+ <mi>&#x03BD;</mi>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>z</mi>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mspace width="1em"/>
+ <mo>=</mo>
+ <mspace width="1em"/>
+ <mrow>
+ <mrow>
+ <msup>
+ <mi>z</mi>
+ <mi>&#x03BD;</mi>
+ </msup>
+ <mo>&#x2062;</mo>
+ <mrow>
+ <msub>
+ <mi>Y</mi>
+ <mi>&#x03BD;</mi>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mo>&#x2062;</mo>
+ <msup>
+ <mrow>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>z</mi>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>&#x03BD;</mi>
+ </mrow>
+ </msup>
+ </mrow>
+ <mo>+</mo>
+ <mrow>
+ <mrow>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mrow>
+ <msup>
+ <mrow>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>z</mi>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mi>&#x03BD;</mi>
+ </msup>
+ <mo>&#x2062;</mo>
+ <msup>
+ <mi>z</mi>
+ <mrow>
+ <mo>-</mo>
+ <mi>&#x03BD;</mi>
+ </mrow>
+ </msup>
+ </mrow>
+ <mo>-</mo>
+ <mrow>
+ <msup>
+ <mrow>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>z</mi>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>&#x03BD;</mi>
+ </mrow>
+ </msup>
+ <mo>&#x2062;</mo>
+ <msup>
+ <mi>z</mi>
+ <mi>&#x03BD;</mi>
+ </msup>
+ </mrow>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mo>&#x2062;</mo>
+ <mrow>
+ <msub>
+ <mi>J</mi>
+ <mi>&#x03BD;</mi>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mo>&#x2062;</mo>
+ <mrow>
+ <mi>cot</mi>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mi>&#x03C0;</mi>
+ <mo>&#x2062;</mo>
+ <mi>&#x03BD;</mi>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mrow>
+ </mrow>
+ </mrow>
+ <mspace width="1em"/>
+ <mo>;</mo>
+ <mspace width="1em"/>
+ <mrow>
+ <mi>&#x03BD;</mi>
+ <mo>&#x2209;</mo>
+ <mi>&#x2124;</mi>
+ </mrow>
+ </mrow>
+</math>
+

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

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

Added: trunk/libs/math/doc/sf_and_dist/equations/hankel3.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/hankel3.mml 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,115 @@
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <mrow>
+ <mrow>
+ <msub>
+ <mi>Y</mi>
+ <mi>&#x03BD;</mi>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>z</mi>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mspace width="1em"/>
+ <mo>=</mo>
+ <mspace width="1em"/>
+ <mrow>
+ <msup>
+ <mrow>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mo>-</mo>
+ <mn>1</mn>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mi>&#x03BD;</mi>
+ </msup>
+ <mo>&#x2062;</mo>
+ <mrow>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mrow>
+ <msub>
+ <mi>Y</mi>
+ <mi>&#x03BD;</mi>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mo>-</mo>
+ <mrow>
+ <mfrac>
+ <mn>2</mn>
+ <mi>&#x03C0;</mi>
+ </mfrac>
+ <mo>&#x2062;</mo>
+ <mrow>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mrow>
+ <mi>log</mi>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mo>-</mo>
+ <mrow>
+ <mi>log</mi>
+ <mfenced>
+ <mrow>
+ <mrow>
+ <mo>-</mo>
+ <mi>z</mi>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ <mo>&#x2062;</mo>
+ <mrow>
+ <msub>
+ <mi>J</mi>
+ <mi>&#x03BD;</mi>
+ </msub>
+ <mfenced>
+ <mrow>
+ <mi>z</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mrow>
+ </mrow>
+ </mrow>
+ </mfenced>
+ </mrow>
+ </mrow>
+ </mrow>
+ <mspace width="1em"/>
+ <mo>;</mo>
+ <mspace width="1em"/>
+ <mrow>
+ <mi>&#x03BD;</mi>
+ <mo>&#x2208;</mo>
+ <mi>&#x2124;</mi>
+ </mrow>
+ </mrow>
+</math>
+

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

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

Added: trunk/libs/math/doc/sf_and_dist/equations/hankel4.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/hankel4.mml 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,69 @@
+<?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>hankel4</title>
+<!-- MathML created with MathCast Equation Editor version 0.89 -->
+</head>
+<body>
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <msubsup>
+ <mi>h</mi>
+ <mrow>
+ <mi>v</mi>
+ </mrow>
+ <mfenced>
+ <mrow>
+ <mn>1</mn>
+ </mrow>
+ </mfenced>
+ </msubsup>
+ <mfenced>
+ <mrow>
+ <mi>x</mi>
+ </mrow>
+ </mfenced>
+ <mspace width="1em"/>
+ <mo>=</mo>
+ <mspace width="1em"/>
+ <msqrt>
+ <mrow>
+ <mfrac>
+ <mi>&#x03C0;</mi>
+ <mn>2</mn>
+ </mfrac>
+ </mrow>
+ </msqrt>
+ <mfrac>
+ <mn>1</mn>
+ <msqrt>
+ <mi>x</mi>
+ </msqrt>
+ </mfrac>
+ <msubsup>
+ <mi>H</mi>
+ <mrow>
+ <mi>v</mi>
+ <mo>+</mo>
+ <mfrac>
+ <mn>1</mn>
+ <mn>2</mn>
+ </mfrac>
+ </mrow>
+ <mfenced>
+ <mrow>
+ <mn>1</mn>
+ </mrow>
+ </mfenced>
+ </msubsup>
+ <mfenced>
+ <mrow>
+ <mi>x</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+</math>
+</body>
+</html>

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

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

Added: trunk/libs/math/doc/sf_and_dist/equations/hankel5.mml
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/equations/hankel5.mml 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,69 @@
+<?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>hankel5</title>
+<!-- MathML created with MathCast Equation Editor version 0.89 -->
+</head>
+<body>
+<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
+ <mrow>
+ <msubsup>
+ <mi>h</mi>
+ <mrow>
+ <mi>v</mi>
+ </mrow>
+ <mfenced>
+ <mrow>
+ <mn>2</mn>
+ </mrow>
+ </mfenced>
+ </msubsup>
+ <mfenced>
+ <mrow>
+ <mi>x</mi>
+ </mrow>
+ </mfenced>
+ <mspace width="1em"/>
+ <mo>=</mo>
+ <mspace width="1em"/>
+ <msqrt>
+ <mrow>
+ <mfrac>
+ <mi>&#x03C0;</mi>
+ <mn>2</mn>
+ </mfrac>
+ </mrow>
+ </msqrt>
+ <mfrac>
+ <mn>1</mn>
+ <msqrt>
+ <mi>x</mi>
+ </msqrt>
+ </mfrac>
+ <msubsup>
+ <mi>H</mi>
+ <mrow>
+ <mi>v</mi>
+ <mo>+</mo>
+ <mfrac>
+ <mn>1</mn>
+ <mn>2</mn>
+ </mfrac>
+ </mrow>
+ <mfenced>
+ <mrow>
+ <mn>2</mn>
+ </mrow>
+ </mfenced>
+ </msubsup>
+ <mfenced>
+ <mrow>
+ <mi>x</mi>
+ </mrow>
+ </mfenced>
+ </mrow>
+</math>
+</body>
+</html>

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

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

Added: trunk/libs/math/doc/sf_and_dist/hankel.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/hankel.qbk 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,135 @@
+
+[section:hankel Hankel Functions]
+[section:cyl_hankel Cyclic Hankel Functions]
+
+[h4 Synopsis]
+
+ template <class T1, class T2>
+ std::complex<``__sf_result``> cyl_hankel_h1(T1 v, T2 x);
+
+ template <class T1, class T2, class ``__Policy``>
+ std::complex<``__sf_result``> cyl_hankel_h1(T1 v, T2 x, const ``__Policy``&);
+
+ template <class T1, class T2>
+ std::complex<``__sf_result``> cyl_hankel_h2(T1 v, T2 x);
+
+ template <class T1, class T2, class ``__Policy``>
+ std::complex<``__sf_result``> cyl_hankel_h2(T1 v, T2 x, const ``__Policy``&);
+
+
+[h4 Description]
+
+The functions __cyl_hankel_h1 and __cyl_hankel_h2 return the result of the
+Hankel H1 and H2 functions respectively:
+
+[:['cyl_hankel_h1(v, x) = H[sub v][super (1)](x) = J[sub v](x) + i Y[sub v](x)]]
+
+[:['cyl_hankel_h2(v, x) = H[sub v][super (2)](x) = J[sub v](x) - i Y[sub v](x)]]
+
+where:
+
+['J[sub v](x)] is the Bessel function of the first kind, and ['Y[sub v](x)] is the Bessel function of the second kind.
+
+The return type of these functions is computed using the __arg_pomotion_rules
+when T1 and T2 are different types. The functions are also optimised for the
+relatively common case that T1 is an integer.
+
+[optional_policy]
+
+Note that since the result type is complex, these functions are extended to operate over the whole
+range of ['v] and ['x] (unlike __cyl_bessel_j and __cyl_neumann).
+
+[note Since the result type is complex, the functions can only be instantiated on types
+`float`, `double` and `long double`: this is a limitation of `std::complex`. The arguments
+to these functions must be real-valued, rather than complex though.]
+
+[h4 Testing]
+
+There are just a few spot tests to exercise all the special case handling - the bulk of the testing is done
+on the Bessel functions upon which these are based.
+
+[h4 Accuracy]
+
+Refer to __cyl_bessel_j and __cyl_neumann.
+
+[h4 Implementation]
+
+For ['x < 0] the following reflection formulae are used:
+
+[equation hankel1]
+
+[equation hankel2]
+
+[equation hankel3]
+
+Otherwise the implementation is trivially in terms of the Bessel J and Y functions.
+
+Note however, that the Hankel functions compute the Bessel J and Y functions simultaneously,
+and therefore a single Hankel function call is more efficient than two Bessel function calls.
+The one exception is when ['v] is a small positive integer, in which case the usual Bessel function
+routines for integer order are used.
+
+[endsect]
+
+
+[section:sph_hankel Spherical Hankel Functions]
+
+[h4 Synopsis]
+
+ template <class T1, class T2>
+ std::complex<``__sf_result``> sph_hankel_h1(T1 v, T2 x);
+
+ template <class T1, class T2, class ``__Policy``>
+ std::complex<``__sf_result``> sph_hankel_h1(T1 v, T2 x, const ``__Policy``&);
+
+ template <class T1, class T2>
+ std::complex<``__sf_result``> sph_hankel_h2(T1 v, T2 x);
+
+ template <class T1, class T2, class ``__Policy``>
+ std::complex<``__sf_result``> sph_hankel_h2(T1 v, T2 x, const ``__Policy``&);
+
+
+[h4 Description]
+
+The functions __sph_hankel_h1 and __sph_hankel_h2 return the result of the
+spherical Hankel H1 and H2 functions respectively:
+
+[equation hankel4]
+
+[equation hankel5]
+
+The return type of these functions is computed using the __arg_pomotion_rules
+when T1 and T2 are different types. The functions are also optimised for the
+relatively common case that T1 is an integer.
+
+[optional_policy]
+
+Note that since the result type is complex, these functions are extended to operate over the whole
+range of ['v] and ['x] (unlike the Bessel functions upon which they're based).
+
+[note Since the result type is complex, the functions can only be instantiated on types
+`float`, `double` and `long double`: this is a limitation of `std::complex`. The arguments
+to these functions must be real-valued, rather than complex though.]
+
+[h4 Testing]
+
+There are just a few spot tests to exercise all the special case handling - the bulk of the testing is done
+on the Bessel functions upon which these are based.
+
+[h4 Accuracy]
+
+Refer to __cyl_bessel_j and __cyl_neumann.
+
+[h4 Implementation]
+
+These functions are trivially implemented in terms of __cyl_hankel_h1 and __cyl_hankel_h2.
+
+[endsect]
+[endsect]
+
+[/
+ Copyright 2012 John Maddock.
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+]

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-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -287,6 +287,13 @@
 <dt><span class="section"><a href="math_toolkit/special/bessel/sph_bessel.html">Spherical Bessel
         Functions of the First and Second Kinds</a></span></dt>
 </dl></dd>
+<dt><span class="section">Hankel Functions</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/special/hankel/cyl_hankel.html">Cyclic Hankel
+ Functions</a></span></dt>
+<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">Elliptic Integrals</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="math_toolkit/special/ellint/ellint_intro.html">Elliptic
@@ -534,7 +541,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: April 26, 2012 at 09:45:15 GMT</small></p></td>
+<td align="left"><p><small>Last revised: April 28, 2012 at 17:45:37 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-04-28 13:59:37 EDT (Sat, 28 Apr 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 id1291198">
+<div class="section id1288536">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1291198"></a>Function Index</h2></div></div></div>
+<a name="id1288536"></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">K</a> <a class="link" href="s13.html#idx_id_10">L</a> <a class="link" href="s13.html#idx_id_11">M</a> <a class="link" href="s13.html#idx_id_12">N</a> <a class="link" href="s13.html#idx_id_13">O</a> <a class="link" href="s13.html#idx_id_14">P</a> <a class="link" href="s13.html#idx_id_15">Q</a> <a class="link" href="s13.html#idx_id_16">R</a> <a class="link" href="s13.html#idx_id_17">S</a> <a class="link" href="s13.html#idx_id_18">T</a> <a class="link" href="s13.html#idx_id_19">U</a> <a class="link" href="s13.html#idx_id_20">V</a> <a class="link" href=
"s13.html#idx_id_21">W</a> <a class="link" href="s13.html#idx_id_22">Z</a></p>
 <div class="variablelist"><dl>
 <dt>

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-04-28 13:59:37 EDT (Sat, 28 Apr 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 id1307956">
+<div class="section id1305881">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1307956"></a>Class Index</h2></div></div></div>
+<a name="id1305881"></a>Class Index</h2></div></div></div>
 <p><a class="link" href="s14.html#idx_id_24">B</a> <a class="link" href="s14.html#idx_id_25">C</a> <a class="link" href="s14.html#idx_id_26">D</a> <a class="link" href="s14.html#idx_id_27">E</a> <a class="link" href="s14.html#idx_id_28">F</a> <a class="link" href="s14.html#idx_id_29">G</a> <a class="link" href="s14.html#idx_id_30">H</a> <a class="link" href="s14.html#idx_id_31">I</a> <a class="link" href="s14.html#idx_id_33">L</a> <a class="link" href="s14.html#idx_id_34">M</a> <a class="link" href="s14.html#idx_id_35">N</a> <a class="link" href="s14.html#idx_id_37">P</a> <a class="link" href="s14.html#idx_id_39">R</a> <a class="link" href="s14.html#idx_id_40">S</a> <a class="link" href="s14.html#idx_id_41">T</a> <a class="link" href="s14.html#idx_id_42">U</a> <a class="link" href="s14.html#idx_id_44">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-04-28 13:59:37 EDT (Sat, 28 Apr 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 id1308914">
+<div class="section id1306822">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1308914"></a>Typedef Index</h2></div></div></div>
+<a name="id1306822"></a>Typedef Index</h2></div></div></div>
 <p><a class="link" href="s15.html#idx_id_46">A</a> <a class="link" href="s15.html#idx_id_47">B</a> <a class="link" href="s15.html#idx_id_48">C</a> <a class="link" href="s15.html#idx_id_49">D</a> <a class="link" href="s15.html#idx_id_50">E</a> <a class="link" href="s15.html#idx_id_51">F</a> <a class="link" href="s15.html#idx_id_52">G</a> <a class="link" href="s15.html#idx_id_53">H</a> <a class="link" href="s15.html#idx_id_54">I</a> <a class="link" href="s15.html#idx_id_56">L</a> <a class="link" href="s15.html#idx_id_58">N</a> <a class="link" href="s15.html#idx_id_59">O</a> <a class="link" href="s15.html#idx_id_60">P</a> <a class="link" href="s15.html#idx_id_62">R</a> <a class="link" href="s15.html#idx_id_63">S</a> <a class="link" href="s15.html#idx_id_64">T</a> <a class="link" href="s15.html#idx_id_65">U</a> <a class="link" href="s15.html#idx_id_66">V</a> <a class="link" href="s15.html#idx_id_67">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-04-28 13:59:37 EDT (Sat, 28 Apr 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 id1310731">
+<div class="section id1310004">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1310731"></a>Macro Index</h2></div></div></div>
+<a name="id1310004"></a>Macro Index</h2></div></div></div>
 <p><a class="link" href="s16.html#idx_id_70">B</a> <a class="link" href="s16.html#idx_id_74">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-04-28 13:59:37 EDT (Sat, 28 Apr 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 id1315235">
+<div class="section id1312324">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id1315235"></a>Index</h2></div></div></div>
+<a name="id1312324"></a>Index</h2></div></div></div>
 <p><a class="link" href="s17.html#idx_id_92">A</a> <a class="link" href="s17.html#idx_id_93">B</a> <a class="link" href="s17.html#idx_id_94">C</a> <a class="link" href="s17.html#idx_id_95">D</a> <a class="link" href="s17.html#idx_id_96">E</a> <a class="link" href="s17.html#idx_id_97">F</a> <a class="link" href="s17.html#idx_id_98">G</a> <a class="link" href="s17.html#idx_id_99">H</a> <a class="link" href="s17.html#idx_id_100">I</a> <a class="link" href="s17.html#idx_id_101">K</a> <a class="link" href="s17.html#idx_id_102">L</a> <a class="link" href="s17.html#idx_id_103">M</a> <a class="link" href="s17.html#idx_id_104">N</a> <a class="link" href="s17.html#idx_id_105">O</a> <a class="link" href="s17.html#idx_id_106">P</a> <a class="link" href="s17.html#idx_id_107">Q</a> <a class="link" href="s17.html#idx_id_108">R</a> <a class="link" href="s17.html#idx_id_109">S</a> <a class="link" href="s17.html#idx_id_110">T</a> <a class="link" href="s17.html#idx_id_111">U</a> <a class="link" href="s17.html#idx_id_112">V</a
> <a class="link" href="s17.html#idx_id_113">W</a> <a class="link" href="s17.html#idx_id_114">Z</a></p>
 <div class="variablelist"><dl>
 <dt>

Added: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/skew_normal_dist.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/skew_normal_dist.html 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,499 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Skew Normal Distribution</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="../dists.html" title="Distributions">
+<link rel="prev" href="rayleigh.html" title="Rayleigh Distribution">
+<link rel="next" href="students_t_dist.html" title="Students t Distribution">
+</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="rayleigh.html"><img src="../../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.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="students_t_dist.html"><img src="../../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_dist_ref_dists_skew_normal_dist">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist"></a><a class="link" href="skew_normal_dist.html" title="Skew Normal Distribution">Skew
+ Normal Distribution</a>
+</h5></div></div></div>
+<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">distributions</span><span class="special">/</span><span class="identifier">skew_normal</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">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">,</span>
+ <span class="keyword">class</span> <a class="link" href="../../../policy.html" title="Policies">Policy</a> <span class="special">=</span> <a class="link" href="../../../policy/pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy&lt;&gt;</a> <span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">skew_normal_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">skew_normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">normal</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../../policy.html" title="Policies">Policy</a><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">skew_normal_distribution</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">RealType</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">Policy</span> <span class="identifier">policy_type</span><span class="special">;</span>
+ <span class="comment">// Constructor:</span>
+ <span class="identifier">skew_normal_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">location</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">scale</span> <span class="special">=</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">shape</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span>
+ <span class="comment">// Accessors:</span>
+ <span class="identifier">RealType</span> <span class="identifier">location</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <span class="comment">// mean if normal.</span>
+ <span class="identifier">RealType</span> <span class="identifier">scale</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <span class="comment">// width, standard deviation if normal.</span>
+ <span class="identifier">RealType</span> <span class="identifier">shape</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <span class="comment">// The distribution is right skewed if shape &gt; 0 and is left skewed if shape &lt; 0.</span>
+ <span class="comment">// The distribution is normal if shape is zero.</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The skew normal distribution is a variant of the most well known Gaussian
+ statistical distribution.
+ </p>
+<p>
+ The skew normal distribution with shape zero resembles the <a href="http://en.wikipedia.org/wiki/Normal_distribution" target="_top">Normal
+ Distribution</a>, hence the latter can be regarded as a special case
+ of the more generic skew normal distribution.
+ </p>
+<p>
+ If the standard (mean = 0, scale = 1) normal distribution probability
+ density function is
+ </p>
+<p>
+ &#160; &#160; <span class="inlinemediaobject"><img src="../../../../../equations/normal01_pdf.png"></span>
+ </p>
+<p>
+ and the cumulative distribution function
+ </p>
+<p>
+ &#160; &#160; <span class="inlinemediaobject"><img src="../../../../../equations/normal01_cdf.png"></span>
+ </p>
+<p>
+ then the PDF
+ of the <a href="http://en.wikipedia.org/wiki/Skew_normal_distribution" target="_top">skew
+ normal distribution</a> with shape parameter &#945;, defined by O'Hagan
+ and Leonhard (1976) is
+ </p>
+<p>
+ &#160; &#160; <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_pdf0.png"></span>
+ </p>
+<p>
+ Given location
+ &#958;, scale
+ &#969;, and shape
+ &#945;, it can be transformed,
+ to the form:
+ </p>
+<p>
+ &#160; &#160; <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_pdf.png"></span>
+ </p>
+<p>
+ and CDF:
+ </p>
+<p>
+ &#160; &#160; <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_cdf.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>T(h,a)</em></span> is Owen's T function, and <span class="emphasis"><em>&#934;(x)</em></span>
+ is the normal distribution.
+ </p>
+<p>
+ The variation the PDF and CDF with its parameters is illustrated in the
+ following graphs:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../../graphs/skew_normal_pdf.png" align="middle"></span>
+ <span class="inlinemediaobject"><img src="../../../../../graphs/skew_normal_cdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.h0"></a>
+ <span><a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.member_functions"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.dist.dist_ref.dists.skew_normal_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">skew_normal_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">location</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">scale</span> <span class="special">=</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">shape</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a skew_normal distribution with location &#958;, scale &#969; and shape
+ &#945;.
+ </p>
+<p>
+ Requires scale &gt; 0, otherwise <a class="link" href="../../../main_overview/error_handling.html#domain_error">domain_error</a>
+ is called.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">location</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ returns the location &#958; of this distribution,
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">scale</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ returns the scale &#969; of this distribution,
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">shape</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ returns the shape &#945; of this distribution.
+ </p>
+<p>
+ (Location and scale function match other similar distributions, allowing
+ the functions <code class="computeroutput"><span class="identifier">find_location</span></code>
+ and <code class="computeroutput"><span class="identifier">find_scale</span></code> to be
+ used generically).
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ While the shape parameter may be chosen arbitrarily (finite), the resulting
+ <span class="bold"><strong>skewness</strong></span> of the distribution is in
+ fact limited to about (-1, 1); strictly, the interval is (-0.9952717,
+ 0.9952717).
+ </p>
+<p>
+ A parameter &#948; is related to the shape &#945; by &#948; = &#945; / (1 + &#945;&#178;), and used in the
+ expression for skewness <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_skewness.png"></span>
+
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.h1"></a>
+ <span><a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.references"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.dist.dist_ref.dists.skew_normal_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ <a href="http://azzalini.stat.unipd.it/SN/" target="_top">Skew-Normal Probability
+ Distribution</a> for many links and bibliography.
+ </li>
+<li class="listitem">
+ <a href="http://azzalini.stat.unipd.it/SN/Intro/intro.html" target="_top">A
+ very brief introduction to the skew-normal distribution</a> by
+ Adelchi Azzalini (2005-11-2).
+ </li>
+<li class="listitem">
+ See a <a href="http://www.tri.org.au/azzalini.html" target="_top">skew-normal
+ function animation</a>.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.h2"></a>
+ <span><a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.non_member_accessors"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.dist.dist_ref.dists.skew_normal_dist.non_member_accessors">Non-member
+ Accessors</a>
+ </h5>
+<p>
+ All the <a class="link" href="../nmp.html" title="Non-Member Properties">usual non-member
+ accessor functions</a> that are generic to all distributions are supported:
+ <a class="link" href="../nmp.html#math.dist.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math.dist.pdf">Probability Density Function</a>, <a class="link" href="../nmp.html#math.dist.quantile">Quantile</a>, <a class="link" href="../nmp.html#math.dist.hazard">Hazard
+ Function</a>, <a class="link" href="../nmp.html#math.dist.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math.dist.mean">mean</a>, <a class="link" href="../nmp.html#math.dist.median">median</a>,
+ <a class="link" href="../nmp.html#math.dist.mode">mode</a>, <a class="link" href="../nmp.html#math.dist.variance">variance</a>,
+ <a class="link" href="../nmp.html#math.dist.sd">standard deviation</a>, <a class="link" href="../nmp.html#math.dist.skewness">skewness</a>,
+ <a class="link" href="../nmp.html#math.dist.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math.dist.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math.dist.range">range</a> and <a class="link" href="../nmp.html#math.dist.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is <span class="emphasis"><em>-[max_value</em></span>,
+ +[min_value]]. Infinite values are not supported.
+ </p>
+<p>
+ There are no <a href="http://en.wikipedia.org/wiki/Closed-form_expression" target="_top">closed-form
+ expression</a> known for the mode and median, but these are computed
+ for the
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ mode - by finding the maximum of the PDF.
+ </li>
+<li class="listitem">
+ median - by computing <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="number">1</span><span class="special">/</span><span class="number">2</span><span class="special">)</span></code>.
+ </li>
+</ul></div>
+<p>
+ The maximum of the PDF is sought through searching the root of f'(x)=0.
+ </p>
+<p>
+ Both involve iterative methods that will have lower accuracy than other
+ estimates.
+ </p>
+<h5>
+<a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.h3"></a>
+ <span><a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.testing"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.dist.dist_ref.dists.skew_normal_dist.testing">testing</a>
+ </h5>
+<p>
+ <a href="http://www.r-project.org/" target="_top">The R Project for Statistical
+ Computing</a> using library(sn) described at <a href="http://azzalini.stat.unipd.it/SN/" target="_top">Skew-Normal
+ Probability Distribution</a>, and at <a href="http://cran.r-project.org/web/packages/sn/sn.pd" target="_top">R
+ skew-normal(sn) package</a>.
+ </p>
+<p>
+ Package sn provides functions related to the skew-normal (SN) and the
+ skew-t (ST) probability distributions, both for the univariate and for
+ the the multivariate case, including regression models.
+ </p>
+<h5>
+<a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.h4"></a>
+ <span><a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.accuracy"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.dist.dist_ref.dists.skew_normal_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The skew_normal distribution with shape = zero is implemented as a special
+ case, equivalent to the normal distribution in terms of the <a class="link" href="../../../special/sf_erf/error_function.html" title="Error Functions">error
+ function</a>, and therefore should have excellent accuracy.
+ </p>
+<p>
+ The PDF and mean, variance, skewness and kurtosis are also accurately
+ evaluated using <a href="http://en.wikipedia.org/wiki/Analytical_expression" target="_top">analytical
+ expressions</a>. The CDF requires <a href="http://en.wikipedia.org/wiki/Owen%27s_T_function" target="_top">Owen's
+ T function</a> that is evaluated using a Boost C++ <a class="link" href="../../../special/owens_t.html" title="Owen's T function">Owens
+ T</a> implementation of the algorithms of M. Patefield and D. Tandy,
+ Journal of Statistical Software, 5(5), 1-25 (2000); the complicated accuracy
+ of this function is discussed in detail at <a class="link" href="../../../special/owens_t.html" title="Owen's T function">Owens
+ T</a>.
+ </p>
+<p>
+ The median and mode are calculated by iterative root finding, and both
+ will be less accurate.
+ </p>
+<h5>
+<a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.h5"></a>
+ <span><a name="math_toolkit.dist.dist_ref.dists.skew_normal_dist.implementation"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.dist.dist_ref.dists.skew_normal_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table, &#958; is the location of the distribution, and &#969; is its
+ scale, and &#945; is its shape.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Implementation Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ pdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using: <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_pdf.png"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using: <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_cdf.png"></span><br> where <span class="emphasis"><em>T(h,a)</em></span>
+ is Owen's T function, and <span class="emphasis"><em>&#934;(x)</em></span> is the normal
+ distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using: complement of normal distribution + 2 * Owens_t
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Maximum of the pdf is sought through searching the root of
+ f'(x)=0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ -quantile(SN(-location &#958;, scale &#969;, -shape&#945;), p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ location
+ </p>
+ </td>
+<td>
+ <p>
+ location &#958;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ scale
+ </p>
+ </td>
+<td>
+ <p>
+ scale &#969;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ shape
+ </p>
+ </td>
+<td>
+ <p>
+ shape &#945;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ median
+ </p>
+ </td>
+<td>
+ <p>
+ quantile(1/2)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_mean.png"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ Maximum of the pdf is sought through searching the root of
+ f'(x)=0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_variance.png"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_skewness.png"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ kurtosis excess-3
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../../equations/skew_normal_kurt_ex.png"></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></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="rayleigh.html"><img src="../../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.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="students_t_dist.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/main_overview/conventions.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/conventions.html 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,84 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Document Conventions</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="../main_overview.html" title="Overview">
+<link rel="prev" href="navigation.html" title="Navigation">
+<link rel="next" href="hints.html" title="Other Hints and tips">
+</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="navigation.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../main_overview.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="hints.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_main_overview_conventions">
+<div class="titlepage"><div><div><h3 class="title">
+<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="id833488"></a>
+ </p>
+<p>
+ This documentation aims to use of the following naming and formatting conventions.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ C++ Code is in <code class="computeroutput"><span class="identifier">fixed</span> <span class="identifier">width</span> <span class="identifier">font</span></code>
+ and is syntax-highlighted in color, for example <code class="computeroutput"><span class="keyword">double</span></code>.
+ </li>
+<li class="listitem">
+ Other code is in block <code class="literal">teletype fixed-width font</code>.
+ </li>
+<li class="listitem">
+ Replaceable text that <span class="bold"><strong>you</strong></span> will need
+ to supply is in <em class="replaceable"><code>italics</code></em>.
+ </li>
+<li class="listitem">
+ If a name refers to a free function, it is specified like this: <code class="computeroutput"><span class="identifier">free_function</span><span class="special">()</span></code>;
+ that is, it is in <em class="replaceable"><code>code font</code></em> and its name is
+ followed by <code class="computeroutput"><span class="special">()</span></code> to indicate
+ that it is a free function.
+ </li>
+<li class="listitem">
+ If a name refers to a class template, it is specified like this: <code class="computeroutput"><span class="identifier">class_template</span><span class="special">&lt;&gt;</span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">&lt;&gt;</span></code> to indicate that it is a class
+ template.
+ </li>
+<li class="listitem">
+ If a name refers to a function-like macro, it is specified like this:
+ <code class="computeroutput"><span class="identifier">MACRO</span><span class="special">()</span></code>;
+ that is, it is uppercase in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code> to indicate that it is a function-like
+ macro. Object-like macros appear without the trailing <code class="computeroutput"><span class="special">()</span></code>.
+ </li>
+<li class="listitem">
+ Names that refer to <span class="emphasis"><em>concepts</em></span> in the generic programming
+ sense (like template parameter names) are specified in CamelCase.
+ </li>
+</ul></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="navigation.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../main_overview.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="hints.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/main_overview/hints.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/hints.html 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,111 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Other Hints and tips</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="../main_overview.html" title="Overview">
+<link rel="prev" href="conventions.html" title="Document Conventions">
+<link rel="next" href="directories.html" title="Directory and File Structure">
+</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="conventions.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../main_overview.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="directories.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_main_overview_hints">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.main_overview.hints"></a><a class="link" href="hints.html" title="Other Hints and tips">Other Hints and tips</a>
+</h3></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ If you have a feature request, or if it appears that the implementation
+ is in error, please search first in the <a href="https://svn.boost.org/trac/boost/" target="_top">Boost
+ Trac</a>.
+ </li>
+<li class="listitem">
+ Trac entries may
+ indicate that updates or corrections that solve your problem are in
+ Boost-trunk
+ where changes are being assembled and tested ready for the next release.
+ You may, at your own risk, download new versions from there.
+ </li>
+<li class="listitem">
+ If you do not understand why things work the way they do, see the <span class="emphasis"><em>rationale</em></span>
+ section.
+ </li>
+<li class="listitem">
+ If you do not find your idea/feature/complaint, please reach the author
+ preferably through the Boost development list, or email the author(s)
+ direct.
+ </li>
+</ul></div>
+<h6>
+<a name="math_toolkit.main_overview.hints.h0"></a>
+ <span><a name="math_toolkit.main_overview.hints.admonishments"></a></span><a class="link" href="hints.html#math_toolkit.main_overview.hints.admonishments">Admonishments</a>
+ </h6>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ In addition, notes such as this one specify non-essential information that
+ provides additional background or rationale.
+ </p></td></tr>
+</table></div>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../../doc/src/images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ These blocks contain information that you may find helpful while coding.
+ </p></td></tr>
+</table></div>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../../doc/src/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ These contain information that is imperative to understanding a concept.
+ Failure to follow suggestions in these blocks will probably result in undesired
+ behavior. Read all of these you find.
+ </p></td></tr>
+</table></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Failure to heed this will lead to incorrect, and very likely undesired,
+ results.
+ </p></td></tr>
+</table></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="conventions.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../main_overview.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="directories.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/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-04-28 13:59:37 EDT (Sat, 28 Apr 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="id834908"></a>
+ <a class="indexterm" name="id833358"></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-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -90,6 +90,13 @@
 <dt><span class="section"><a href="special/bessel/sph_bessel.html">Spherical Bessel
         Functions of the First and Second Kinds</a></span></dt>
 </dl></dd>
+<dt><span class="section">Hankel Functions</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="special/hankel/cyl_hankel.html">Cyclic Hankel
+ Functions</a></span></dt>
+<dt><span class="section"><a href="special/hankel/sph_hankel.html">Spherical Hankel
+ Functions</a></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

Modified: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html (original)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../../index.html" title="Math Toolkit">
 <link rel="up" href="../bessel.html" title="Bessel Functions">
 <link rel="prev" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">
-<link rel="next" href="../ellint.html" title="Elliptic Integrals">
+<link rel="next" href="../hankel.html" title="Hankel 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="mbessel.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.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="mbessel.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.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="../hankel.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section math_toolkit_special_bessel_sph_bessel">
 <div class="titlepage"><div><div><h4 class="title">
@@ -150,7 +150,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="mbessel.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.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="mbessel.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.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="../hankel.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-04-28 13:59:37 EDT (Sat, 28 Apr 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="bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">
+<link rel="prev" href="hankel/sph_hankel.html" title="Spherical Hankel Functions">
 <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="bessel/sph_bessel.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="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>
 </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="bessel/sph_bessel.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="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>
 </div>
 </body>
 </html>

Added: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel.html 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Hankel 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="bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">
+<link rel="next" href="hankel/cyl_hankel.html" title="Cyclic Hankel Functions">
+</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="bessel/sph_bessel.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="hankel/cyl_hankel.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_special_hankel">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.special.hankel"></a><a class="link" href="hankel.html" title="Hankel Functions">Hankel Functions</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="hankel/cyl_hankel.html">Cyclic Hankel
+ Functions</a></span></dt>
+<dt><span class="section"><a href="hankel/sph_hankel.html">Spherical Hankel
+ Functions</a></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="bessel/sph_bessel.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="hankel/cyl_hankel.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/hankel/cyl_hankel.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel/cyl_hankel.html 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,158 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Cyclic Hankel 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="../hankel.html" title="Hankel Functions">
+<link rel="prev" href="../hankel.html" title="Hankel Functions">
+<link rel="next" href="sph_hankel.html" title="Spherical Hankel Functions">
+</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.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="sph_hankel.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_special_hankel_cyl_hankel">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.special.hankel.cyl_hankel"></a><a class="link" href="cyl_hankel.html" title="Cyclic Hankel Functions">Cyclic Hankel
+ Functions</a>
+</h4></div></div></div>
+<h5>
+<a name="math_toolkit.special.hankel.cyl_hankel.h0"></a>
+ <span><a name="math_toolkit.special.hankel.cyl_hankel.synopsis"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.special.hankel.cyl_hankel.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</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="special">&gt;</span> <span class="identifier">cyl_hankel_h1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</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">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Policies">Policy</a><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</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="special">&gt;</span> <span class="identifier">cyl_hankel_h1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</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="special">&gt;</span> <span class="identifier">cyl_hankel_h2</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</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">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Policies">Policy</a><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</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="special">&gt;</span> <span class="identifier">cyl_hankel_h2</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
+</pre>
+<h5>
+<a name="math_toolkit.special.hankel.cyl_hankel.h1"></a>
+ <span><a name="math_toolkit.special.hankel.cyl_hankel.description"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.special.hankel.cyl_hankel.description">Description</a>
+ </h5>
+<p>
+ The functions <a class="link" href="cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_h1</a>
+ and <a class="link" href="cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_h2</a>
+ return the result of the Hankel H1 and H2 functions respectively:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>cyl_hankel_h1(v, x) = H<sub>v</sub><sup>(1)</sup>(x) = J<sub>v</sub>(x) + i Y<sub>v</sub>(x)</em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>cyl_hankel_h2(v, x) = H<sub>v</sub><sup>(2)</sup>(x) = J<sub>v</sub>(x) - i Y<sub>v</sub>(x)</em></span>
+ </p></blockquote></div>
+<p>
+ where:
+ </p>
+<p>
+ <span class="emphasis"><em>J<sub>v</sub>(x)</em></span> is the Bessel function of the first kind, and
+ <span class="emphasis"><em>Y<sub>v</sub>(x)</em></span> is the Bessel function of the second kind.
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a> when T1 and T2 are different types.
+ The functions are also optimised for the relatively common case that T1
+ is an integer.
+ </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>
+ Note that since the result type is complex, these functions are extended
+ to operate over the whole range of <span class="emphasis"><em>v</em></span> and <span class="emphasis"><em>x</em></span>
+ (unlike <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/bessel.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>).
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Since the result type is complex, the functions can only be instantiated
+ on types <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code> and <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>: this is a limitation of
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span></code>. The arguments to these functions
+ must be real-valued, rather than complex though.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.special.hankel.cyl_hankel.h2"></a>
+ <span><a name="math_toolkit.special.hankel.cyl_hankel.testing"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.special.hankel.cyl_hankel.testing">Testing</a>
+ </h5>
+<p>
+ There are just a few spot tests to exercise all the special case handling
+ - the bulk of the testing is done on the Bessel functions upon which these
+ are based.
+ </p>
+<h5>
+<a name="math_toolkit.special.hankel.cyl_hankel.h3"></a>
+ <span><a name="math_toolkit.special.hankel.cyl_hankel.accuracy"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.special.hankel.cyl_hankel.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Refer to <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/bessel.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>.
+ </p>
+<h5>
+<a name="math_toolkit.special.hankel.cyl_hankel.h4"></a>
+ <span><a name="math_toolkit.special.hankel.cyl_hankel.implementation"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.special.hankel.cyl_hankel.implementation">Implementation</a>
+ </h5>
+<p>
+ For <span class="emphasis"><em>x &lt; 0</em></span> the following reflection formulae are
+ used:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hankel1.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hankel2.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hankel3.png"></span>
+ </p>
+<p>
+ Otherwise the implementation is trivially in terms of the Bessel J and
+ Y functions.
+ </p>
+<p>
+ Note however, that the Hankel functions compute the Bessel J and Y functions
+ simultaneously, and therefore a single Hankel function call is more efficient
+ than two Bessel function calls. The one exception is when <span class="emphasis"><em>v</em></span>
+ is a small positive integer, in which case the usual Bessel function routines
+ for integer order are used.
+ </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="../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="sph_hankel.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/hankel/sph_hankel.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/hankel/sph_hankel.html 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,130 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Spherical Hankel 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="../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">
+</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="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>
+</div>
+<div class="section math_toolkit_special_hankel_sph_hankel">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.special.hankel.sph_hankel"></a><a class="link" href="sph_hankel.html" title="Spherical Hankel Functions">Spherical Hankel
+ Functions</a>
+</h4></div></div></div>
+<h5>
+<a name="math_toolkit.special.hankel.sph_hankel.h0"></a>
+ <span><a name="math_toolkit.special.hankel.sph_hankel.synopsis"></a></span><a class="link" href="sph_hankel.html#math_toolkit.special.hankel.sph_hankel.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</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="special">&gt;</span> <span class="identifier">sph_hankel_h1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</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">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Policies">Policy</a><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</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="special">&gt;</span> <span class="identifier">sph_hankel_h1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</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="special">&gt;</span> <span class="identifier">sph_hankel_h2</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</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">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Policies">Policy</a><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</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="special">&gt;</span> <span class="identifier">sph_hankel_h2</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
+</pre>
+<h5>
+<a name="math_toolkit.special.hankel.sph_hankel.h1"></a>
+ <span><a name="math_toolkit.special.hankel.sph_hankel.description"></a></span><a class="link" href="sph_hankel.html#math_toolkit.special.hankel.sph_hankel.description">Description</a>
+ </h5>
+<p>
+ The functions <a class="link" href="sph_hankel.html" title="Spherical Hankel Functions">sph_hankel_h1</a>
+ and <a class="link" href="sph_hankel.html" title="Spherical Hankel Functions">sph_hankel_h2</a>
+ return the result of the spherical Hankel H1 and H2 functions respectively:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hankel4.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hankel5.png"></span>
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a> when T1 and T2 are different types.
+ The functions are also optimised for the relatively common case that T1
+ is an integer.
+ </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>
+ Note that since the result type is complex, these functions are extended
+ to operate over the whole range of <span class="emphasis"><em>v</em></span> and <span class="emphasis"><em>x</em></span>
+ (unlike the Bessel functions upon which they're based).
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Since the result type is complex, the functions can only be instantiated
+ on types <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code> and <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>: this is a limitation of
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span></code>. The arguments to these functions
+ must be real-valued, rather than complex though.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.special.hankel.sph_hankel.h2"></a>
+ <span><a name="math_toolkit.special.hankel.sph_hankel.testing"></a></span><a class="link" href="sph_hankel.html#math_toolkit.special.hankel.sph_hankel.testing">Testing</a>
+ </h5>
+<p>
+ There are just a few spot tests to exercise all the special case handling
+ - the bulk of the testing is done on the Bessel functions upon which these
+ are based.
+ </p>
+<h5>
+<a name="math_toolkit.special.hankel.sph_hankel.h3"></a>
+ <span><a name="math_toolkit.special.hankel.sph_hankel.accuracy"></a></span><a class="link" href="sph_hankel.html#math_toolkit.special.hankel.sph_hankel.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Refer to <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/bessel.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>.
+ </p>
+<h5>
+<a name="math_toolkit.special.hankel.sph_hankel.h4"></a>
+ <span><a name="math_toolkit.special.hankel.sph_hankel.implementation"></a></span><a class="link" href="sph_hankel.html#math_toolkit.special.hankel.sph_hankel.implementation">Implementation</a>
+ </h5>
+<p>
+ These functions are trivially implemented in terms of <a class="link" href="cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_h1</a>
+ and <a class="link" href="cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_h2</a>.
+ </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="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>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/owens_t.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/owens_t.html 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,230 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Owen's T 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="../special.html" title="Special Functions">
+<link rel="prev" href="inv_hyper/atanh.html" title="atanh">
+<link rel="next" href="../utils.html" title="Floating Point Utilities">
+</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="inv_hyper/atanh.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="../utils.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_special_owens_t">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.special.owens_t"></a><a class="link" href="owens_t.html" title="Owen's T function">Owen's T function</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.special.owens_t.h0"></a>
+ <span><a name="math_toolkit.special.owens_t.synopsis"></a></span><a class="link" href="owens_t.html#math_toolkit.special.owens_t.synopsis">Synopsis</a>
+ </h5>
+<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">owens_t</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">owens_t</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">h</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">a</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> <a class="link" href="../policy.html" title="Policies">Policy</a><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">owens_t</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">h</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.special.owens_t.h1"></a>
+ <span><a name="math_toolkit.special.owens_t.description"></a></span><a class="link" href="owens_t.html#math_toolkit.special.owens_t.description">Description</a>
+ </h5>
+<p>
+ Returns the <a href="http://en.wikipedia.org/wiki/Owen%27s_T_function" target="_top">Owens_t
+ function</a> of <span class="emphasis"><em>h</em></span> and <span class="emphasis"><em>a</em></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>
+ &#8198; &#8198; <span class="inlinemediaobject"><img src="../../../equations/owens_t.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/plot_owens_t.png" alt="plot_owens_t"></span>
+ </p>
+<p>
+ The function <code class="computeroutput"><span class="identifier">owens_t</span><span class="special">(</span><span class="identifier">h</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code> gives the probability of the event <span class="emphasis"><em>(X
+ &gt; h and 0 &lt; Y &lt; a * X)</em></span>, where <span class="emphasis"><em>X</em></span>
+ and <span class="emphasis"><em>Y</em></span> are independent standard normal random variables.
+ </p>
+<p>
+ For h and a &gt; 0, T(h,a), gives the volume of an uncorrelated bivariate
+ normal distribution with zero means and unit variances over the area between
+ <span class="emphasis"><em>y = ax</em></span> and <span class="emphasis"><em>y = 0</em></span> and to the right
+ of <span class="emphasis"><em>x = h</em></span>.
+ </p>
+<p>
+ That is the area shaded in the figure below (Owens 1956).
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/owens_integration_area.png" align="middle"></span>
+ </p>
+<p>
+ and is also illustrated by a 3D plot.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/plot_owens_3d_xyp.png" alt="plot_owens_3d_xyp"></span>
+ </p>
+<p>
+ This function is used in the computation of the <a class="link" href="../dist/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution">Skew
+ Normal Distribution</a>. It is also used in the computation of bivariate
+ and multivariate normal distribution probabilities. The return type of this
+ function is computed using the <a class="link" href="../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the result is of type <code class="computeroutput"><span class="keyword">double</span></code> when T is an integer type, and type
+ T otherwise.
+ </p>
+<p>
+ Owen's original paper (page 1077) provides some additional corner cases.
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>T(h, 0) = 0</em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>T(0, a) = &#189;&#960; arctan(a)</em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>T(h, 1) = &#189; G(h) [1 - G(h)]</em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>T(h, &#8734;) = G(|h|)</em></span>
+ </p></blockquote></div>
+<p>
+ where G(h) is the univariate normal with zero mean and unit variance integral
+ from -&#8734; to h.
+ </p>
+<h5>
+<a name="math_toolkit.special.owens_t.h2"></a>
+ <span><a name="math_toolkit.special.owens_t.accuracy"></a></span><a class="link" href="owens_t.html#math_toolkit.special.owens_t.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Over the built-in types and range tested, errors are less than 10 * std::numeric_limits&lt;RealType&gt;::epsilon().
+ </p>
+<h5>
+<a name="math_toolkit.special.owens_t.h3"></a>
+ <span><a name="math_toolkit.special.owens_t.testing"></a></span><a class="link" href="owens_t.html#math_toolkit.special.owens_t.testing">Testing</a>
+ </h5>
+<p>
+ Test data was generated by Patefield and Tandy algorithms T1 and T4, and
+ also the suggested reference routine T7.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ T1 was rejected if the result was too small compared to <code class="computeroutput"><span class="identifier">atan</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>
+ (ie cancellation),
+ </li>
+<li class="listitem">
+ T4 was rejected if there was no convergence,
+ </li>
+<li class="listitem">
+ Both were rejected if they didn't agree.
+ </li>
+</ul></div>
+<p>
+ Over the built-in types and range tested, errors are less than 10 std::numeric_limits&lt;RealType&gt;::epsilon().
+ </p>
+<p>
+ However, that there was a whole domain (large <span class="emphasis"><em>h</em></span>, small
+ <span class="emphasis"><em>a</em></span>) where it was not possible to generate any reliable
+ test values (all the methods got rejected for one reason or another).
+ </p>
+<p>
+ There are also two sets of sanity tests: spot values are computed using
+ <a href="http://www.wolfram.com/products/mathematica/index.html" target="_top">Wolfram
+ Mathematica</a> and <a href="http://www.r-project.org/" target="_top">The R Project
+ for Statistical Computing</a>.
+ </p>
+<h5>
+<a name="math_toolkit.special.owens_t.h4"></a>
+ <span><a name="math_toolkit.special.owens_t.implementation"></a></span><a class="link" href="owens_t.html#math_toolkit.special.owens_t.implementation">Implementation</a>
+ </h5>
+<p>
+ The function was proposed and evaluated by <a href="http://projecteuclid.org/DPubS?service=UI&amp;version=1.0&amp;verb=Display&amp;handle=euclid.aoms/1177728074" target="_top">Donald.
+ B. Owen, Tables for computing bivariate normal probabilities, Ann. Math.
+ Statist., 27, 1075-1090 (1956)</a>.
+ </p>
+<p>
+ The algorithms of Patefield, M. and Tandy, D. "Fast and accurate Calculation
+ of Owen's T-Function", Journal of Statistical Software, 5 (5), 1 - 25
+ (2000) are adapted for C++ with arbitrary RealType.
+ </p>
+<p>
+ The Patefield-Tandy algorithm provides six methods of evalualution (T1 to
+ T6); the best method is selected according to the values of <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>h</em></span>. See the original paper and the source in owens_t.hpp
+ for details.
+ </p>
+<p>
+ The Patefield-Tandy algorithm is accurate to approximately 20 decimal places,
+ so for types with greater precision we use:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ A modified version of T1 which folds the calculation of <span class="emphasis"><em>atan(h)</em></span>
+ into the T1 series (to avoid subtracting two values similar in magnitude),
+ and then accelerates the resulting alternating series using method 1
+ from H. Cohen, F. Rodriguez Villegas, D. Zagier, "Convergence acceleration
+ of alternating series", Bonn, (1991). The result is valid everywhere,
+ but doesn't always converge, or may become too divergent in the first
+ few terms to sum accurately. This is used for <span class="emphasis"><em>ah &lt; 1</em></span>.
+ </li>
+<li class="listitem">
+ A modified version of T2 which is accelerated in the same manner as T1.
+ This is used for <span class="emphasis"><em>h &gt; 1</em></span>.
+ </li>
+<li class="listitem">
+ A version of T4 only when both T1 and T2 have failed to produce an accurate
+ answer.
+ </li>
+<li class="listitem">
+ Fallback to the Patefiled Tandy algorithm when all the above methods
+ fail: this happens not at all for our test data at 100 decimal digits
+ precision. However, there is a difficult area when <span class="emphasis"><em>a</em></span>
+ is very close to 1 and the precision increases which may cause this to
+ happen in very exceptional circumstances.
+ </li>
+</ul></div>
+<p>
+ Using the above algorithm and a 100-decimal digit type, results accurate
+ to 80 decimal places were obtained in the difficult area where <span class="emphasis"><em>a</em></span>
+ is close to 1, and greater than 95 decimal places elsewhere.
+ </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="inv_hyper/atanh.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="../utils.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-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -150,6 +150,11 @@
 [def __cyl_bessel_k [link math_toolkit.special.bessel.mbessel cyl_bessel_k]]
 [def __sph_bessel [link math_toolkit.special.bessel.sph_bessel sph_bessel]]
 [def __sph_neumann [link math_toolkit.special.bessel.sph_bessel sph_neumann]]
+[/Hankel Functions]
+[def __cyl_hankel_h1 [link math_toolkit.special.hankel.cyl_hankel cyl_hankel_h1]]
+[def __cyl_hankel_h2 [link math_toolkit.special.hankel.cyl_hankel cyl_hankel_h2]]
+[def __sph_hankel_h1 [link math_toolkit.special.hankel.sph_hankel sph_hankel_h1]]
+[def __sph_hankel_h2 [link math_toolkit.special.hankel.sph_hankel sph_hankel_h2]]
 
 [/sinus cardinals]
 [def __sinc_pi [link math_toolkit.special.sinc.sinc_pi sinc_pi]]
@@ -421,6 +426,9 @@
 [include bessel_spherical.qbk]
 [endsect] [/section:bessel Bessel Functions]
 
+[/Hankel functions]
+[include hankel.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-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -191,6 +191,7 @@
 run test_gamma.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_gamma_dist.cpp pch ../../test/build//boost_test_exec_monitor ;
 run test_geometric.cpp ../../test/build//boost_test_exec_monitor ;
+run test_hankel.cpp ../../test/build//boost_test_exec_monitor ;
 run test_hermite.cpp test_instances pch_light ../../test/build//boost_test_exec_monitor ;
 run test_hypergeometric_dist.cpp ../../test/build//boost_test_exec_monitor
         : # command line

Added: trunk/libs/math/test/test_hankel.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/math/test/test_hankel.cpp 2012-04-28 13:59:37 EDT (Sat, 28 Apr 2012)
@@ -0,0 +1,138 @@
+// 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>
+#include <boost/math/special_functions/hankel.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 Hankel H1 and H2 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 check_close(const std::complex<T>& a, const std::complex<T>& b)
+{
+ T tol = boost::math::tools::epsilon<T>() * 3000;
+ BOOST_CHECK_CLOSE_FRACTION(a.real(), b.real(), tol);
+ BOOST_CHECK_CLOSE_FRACTION(a.imag(), b.imag(), tol);
+}
+
+template <class T>
+void test_hankel(T, const char* name)
+{
+ std::cout << "Testing type " << name << std::endl;
+
+ static const boost::array<boost::array<std::complex<T>, 4>, 8> data =
+ {{
+ // Values are v, z, J, and Y.
+ // H1 and H2 are calculated from functions.wolfram.com.
+ {{ 0, 1, static_cast<T>(0.765197686557966551449717526102663220909274289755325241861548L), static_cast<T>(0.0882569642156769579829267660235151628278175230906755467110438L) }},
+ {{ 20, 15.5, static_cast<T>(0.0114685669049540880132573889173945340441319848974792913849131L), static_cast<T>(-2.23357703561803241011539677726233479433825678625142168545338L) }},
+ {{ 202, 65, static_cast<T>(4.03123907894335908039069177339845754619082182624766366629474e-77L), static_cast<T>(-4.12853948338543234456930697819285129000267780751856135651604e73L) }},
+ {{ 1.25, 2.25, static_cast<T>(0.548918751190427983177518806565451279306141559548962787802891L), static_cast<T>(-0.125900744882628421758627761371862848797979705547465002154794L) }},
+ {{ -20, 15.5, static_cast<T>(0.0114685669049540880132573889173945340441319848974792913849131L), static_cast<T>(-2.23357703561803241011539677726233479433825678625142168545338L) }},
+ {{ -20, -15.5, static_cast<T>(0.0114685669049540880132573889173945340441319848974792913849131L), std::complex<T>(static_cast<T>(-2.23357703561803241011539677726233479433825678625142168545338L), static_cast<T>(0.02293713380990817602651477783478906808826396979495858276983L))}},
+ {{ 1.25, -1.5, std::complex<T>(static_cast<T>(-0.335713500965919366139805990226845134897000581426417882156072L), static_cast<T>(-0.335713500965919366139805990226845134897000581426417882156072L)), std::complex<T>(static_cast<T>(0.392747687664481978664420363126684555843062241632017696636768L), static_cast<T>(-1.064174689596320710944032343580374825637063404484853460948911L)) }},
+ {{ -1.25, -1.5, std::complex<T>(static_cast<T>(0.515099846311769525023685454389374962206960751452481078650112L), static_cast<T>(-0.515099846311769525023685454389374962206960751452481078650112L)), std::complex<T>(static_cast<T>(-0.040329260174013212604062774398331485097569895404765001721544L), static_cast<T>(0.989870432449525837443308134380418439316351607500197155578680L)) }},
+ }};
+
+ std::complex<T> im(0, 1);
+ for(unsigned i = 0; i < data.size(); ++i)
+ {
+ if((i != 2) || (std::numeric_limits<T>::max_exponent10 > 80))
+ {
+ check_close(boost::math::cyl_hankel_h1(data[i][0].real(), data[i][1].real()), data[i][2] + im * data[i][3]);
+ check_close(boost::math::cyl_hankel_h2(data[i][0].real(), data[i][1].real()), data[i][2] - im * data[i][3]);
+
+ check_close(
+ boost::math::cyl_hankel_h1(data[i][0].real() + 0.5f, data[i][1].real()) * boost::math::constants::root_half_pi<T>() / sqrt(data[i][1]),
+ boost::math::sph_hankel_h1(data[i][0].real(), data[i][1].real()));
+ check_close(
+ boost::math::cyl_hankel_h2(data[i][0].real() + 0.5f, data[i][1].real()) * boost::math::constants::root_half_pi<T>() / sqrt(data[i][1]),
+ boost::math::sph_hankel_h2(data[i][0].real(), data[i][1].real()));
+ }
+ }
+}
+
+//
+// Instantiate a few instances to check our error handling code can cope with std::complex:
+//
+typedef boost::math::policies::policy<
+ boost::math::policies::overflow_error<boost::math::policies::throw_on_error>,
+ boost::math::policies::denorm_error<boost::math::policies::throw_on_error>,
+ boost::math::policies::underflow_error<boost::math::policies::throw_on_error>,
+ boost::math::policies::domain_error<boost::math::policies::throw_on_error>,
+ boost::math::policies::pole_error<boost::math::policies::throw_on_error>,
+ boost::math::policies::rounding_error<boost::math::policies::throw_on_error>,
+ boost::math::policies::evaluation_error<boost::math::policies::throw_on_error>,
+ boost::math::policies::indeterminate_result_error<boost::math::policies::throw_on_error> > pol1;
+
+template std::complex<double> boost::math::cyl_hankel_h1<double, double, pol1>(double, double, const pol1&);
+
+typedef boost::math::policies::policy<
+ boost::math::policies::overflow_error<boost::math::policies::errno_on_error>,
+ boost::math::policies::denorm_error<boost::math::policies::errno_on_error>,
+ boost::math::policies::underflow_error<boost::math::policies::errno_on_error>,
+ boost::math::policies::domain_error<boost::math::policies::errno_on_error>,
+ boost::math::policies::pole_error<boost::math::policies::errno_on_error>,
+ boost::math::policies::rounding_error<boost::math::policies::errno_on_error>,
+ boost::math::policies::evaluation_error<boost::math::policies::errno_on_error>,
+ boost::math::policies::indeterminate_result_error<boost::math::policies::errno_on_error> > pol2;
+
+template std::complex<double> boost::math::cyl_hankel_h1<double, double, pol2>(double, double, const pol2&);
+
+typedef boost::math::policies::policy<
+ boost::math::policies::overflow_error<boost::math::policies::ignore_error>,
+ boost::math::policies::denorm_error<boost::math::policies::ignore_error>,
+ boost::math::policies::underflow_error<boost::math::policies::ignore_error>,
+ boost::math::policies::domain_error<boost::math::policies::ignore_error>,
+ boost::math::policies::pole_error<boost::math::policies::ignore_error>,
+ boost::math::policies::rounding_error<boost::math::policies::ignore_error>,
+ boost::math::policies::evaluation_error<boost::math::policies::ignore_error>,
+ boost::math::policies::indeterminate_result_error<boost::math::policies::ignore_error> > pol3;
+
+template std::complex<double> boost::math::cyl_hankel_h1<double, double, pol3>(double, double, const pol3&);
+
+
+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_hankel(0.1F, "float");
+#endif
+ test_hankel(0.1, "double");
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ test_hankel(0.1L, "long double");
+#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;
+}
+
+
+
+


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