|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r84281 - in sandbox/math/libs/math/doc/html: . indexes math_toolkit math_toolkit/airy math_toolkit/bessel math_toolkit/dist_ref math_toolkit/dist_ref/dists math_toolkit/ellint math_toolkit/expint math_toolkit/factorials math_toolkit/fp_facets math_toolkit/hankel math_toolkit/high_precision math_toolkit/internals1 math_toolkit/internals2 math_toolkit/inv_hyper math_toolkit/jacobi math_toolkit/next_float math_toolkit/pol_ref math_toolkit/pol_tutorial math_toolkit/powers math_toolkit/rounding math_toolkit/sf_beta math_toolkit/sf_erf math_toolkit/sf_gamma math_toolkit/sf_poly math_toolkit/sinc math_toolkit/stat_tut math_toolkit/stat_tut/overview math_toolkit/stat_tut/weg math_toolkit/stat_tut/weg/binom_eg math_toolkit/stat_tut/weg/cs_eg math_toolkit/stat_tut/weg/find_eg math_toolkit/stat_tut/weg/nccs_eg math_toolkit/stat_tut/weg/neg_binom_eg math_toolkit/stat_tut/weg/normal_example math_toolkit/stat_tut/weg/st_eg math_toolkit/tutorial math_toolkit/zetas
From: john_at_[hidden]
Date: 2013-05-14 08:40:16
Author: johnmaddock
Date: 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
New Revision: 84281
URL: http://svn.boost.org/trac/boost/changeset/84281
Log:
Regenerate and re-add HTML docs.
Added:
sandbox/math/libs/math/doc/html/backgrounders.html (contents, props changed)
sandbox/math/libs/math/doc/html/constants.html (contents, props changed)
sandbox/math/libs/math/doc/html/dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/extern_c.html (contents, props changed)
sandbox/math/libs/math/doc/html/gcd_lcm.html (contents, props changed)
sandbox/math/libs/math/doc/html/index.html (contents, props changed)
sandbox/math/libs/math/doc/html/indexes/
sandbox/math/libs/math/doc/html/indexes.html (contents, props changed)
sandbox/math/libs/math/doc/html/indexes/s01.html (contents, props changed)
sandbox/math/libs/math/doc/html/indexes/s02.html (contents, props changed)
sandbox/math/libs/math/doc/html/indexes/s03.html (contents, props changed)
sandbox/math/libs/math/doc/html/indexes/s04.html (contents, props changed)
sandbox/math/libs/math/doc/html/indexes/s05.html (contents, props changed)
sandbox/math/libs/math/doc/html/inverse_complex.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/
sandbox/math/libs/math/doc/html/math_toolkit/acknowledgement.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/acknowledgements.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/acos.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/acosh.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/airy/
sandbox/math/libs/math/doc/html/math_toolkit/airy.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/airy/ai.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/airy/aip.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/airy/bi.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/airy/bip.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/archetypes.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/asin.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/asinh.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/atan.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/atanh.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/bessel/
sandbox/math/libs/math/doc/html/math_toolkit/bessel.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/bessel/bessel_first.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/bessel/bessel_over.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/bessel/bessel_root.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/bessel/mbessel.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/bessel/sph_bessel.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/building.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/c99.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/comp_compilers.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/comparisons.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/compile_time.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/compilers_overview.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/complex_history.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/complex_implementation.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/concepts.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/config_macros.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/constants.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/constants_faq.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/constants_intro.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/contact.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/conventions.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/create.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/credits.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/demo.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/directories.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_concept.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dist_algorithms.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/bernoulli_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/beta_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/binomial_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/cauchy_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/chi_squared_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/exp_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/extreme_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/f_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/gamma_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/geometric_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/hypergeometric_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/inverse_gamma_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/inverse_gaussian_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/laplace_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/logistic_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/lognormal_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_beta_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_chi_squared_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_f_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_t_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/negative_binomial_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/normal_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/pareto.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/poisson_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/rayleigh.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/skew_normal_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/students_t_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/triangular_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/uniform_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/weibull_dist.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/nmp.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/ellint/
sandbox/math/libs/math/doc/html/math_toolkit/ellint.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_2.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_3.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_carlson.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_intro.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/error_handling.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/exp.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/expint/
sandbox/math/libs/math/doc/html/math_toolkit/expint.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/expint/expint_i.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/expint/expint_n.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/factorials/
sandbox/math/libs/math/doc/html/math_toolkit/factorials.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_binomial.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_double_factorial.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_factorial.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_falling_factorial.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_rising_factorial.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/
sandbox/math/libs/math/doc/html/math_toolkit/fp_facets.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/examples.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/facets_intro.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/portability.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/rationale.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/reference.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/fpclass.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/future.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/gcd_credits.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/gcd_function_object.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/gcd_header.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/gcd_history.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/getting_best.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/hankel/
sandbox/math/libs/math/doc/html/math_toolkit/hankel.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/hankel/cyl_hankel.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/hankel/sph_hankel.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/high_precision/
sandbox/math/libs/math/doc/html/math_toolkit/high_precision.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/high_precision/e_float.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/high_precision/float128.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/high_precision/use_mpfr.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/high_precision/use_multiprecision.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/high_precision/use_ntl.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/high_precision/using_test.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/high_precision/why_high_precision.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/hints.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/history1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/history2.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals1/
sandbox/math/libs/math/doc/html/math_toolkit/internals1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals1/cf.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals1/minima.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals1/rational.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals1/roots.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals1/roots2.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals1/series_evaluation.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals1/tuples.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals2/
sandbox/math/libs/math/doc/html/math_toolkit/internals2.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals2/error_test.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals2/minimax.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals2/polynomials.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals2/test_data.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/internals_overview.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/interp.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/intro_pol_overview.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/introduction.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/
sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/acosh.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/asinh.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/atanh.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/inv_hyper_over.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/issues.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/
sandbox/math/libs/math/doc/html/math_toolkit/jacobi.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jac_over.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_cd.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_cn.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_cs.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_dc.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_dn.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_ds.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_elliptic.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_nc.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_nd.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_ns.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_sc.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_sd.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_sn.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/lanczos.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/lcm_function_object.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/main_faq.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/main_intro.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/main_tr1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/mem_typedef.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/namespaces.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/navigation.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/new_const.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/next_float/
sandbox/math/libs/math/doc/html/math_toolkit/next_float.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_advance.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_distance.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_next.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_prior.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/next_float/nextafter.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_create.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_header.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_history.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_mem_fun.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_non_mem.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_overview.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_specialization.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_synopsis.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_tests.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_todo.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_trans.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_typedefs.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/oct_value_ops.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/octonion.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/overview_tr1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/owens_t.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/perf_over1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/perf_over2.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/perf_test_app.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_overview.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/assert_undefined.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/discrete_quant_ref.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/error_handling_policies.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/internal_promotion.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/iteration_pol.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/namespace_pol.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/pol_ref_ref.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/policy_defaults.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/precision_pol.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/ad_hoc_dist_policies.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/ad_hoc_sf_policies.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/changing_policy_defaults.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/namespace_policies.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/policy_tut_defaults.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/policy_usage.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/understand_dis_quant.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/user_def_err_pol.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/what_is_a_policy.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/
sandbox/math/libs/math/doc/html/math_toolkit/powers.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/cbrt.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/cos_pi.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/ct_pow.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/expm1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/hypot.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/log1p.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/powm1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/sin_pi.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/powers/sqrt1pm1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/quat.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/quat_header.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/quat_history.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/quat_mem_fun.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/quat_non_mem.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/quat_overview.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/quat_synopsis.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/quat_tests.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/quat_todo.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/rationale.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/refs.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/relative_error.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/remez.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/result_type.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/rounding/
sandbox/math/libs/math/doc/html/math_toolkit/rounding.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/rounding/modf.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/rounding/round.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/rounding/trunc.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/run_time.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/
sandbox/math/libs/math/doc/html/math_toolkit/sf_beta.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/beta_derivative.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/beta_function.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/ibeta_function.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/ibeta_inv_function.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_erf/
sandbox/math/libs/math/doc/html/math_toolkit/sf_erf.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_erf/error_function.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_erf/error_inv.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/
sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/digamma.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/gamma_derivatives.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/gamma_ratios.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/igamma_inv.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/lgamma.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/tgamma.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_implementation.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/
sandbox/math/libs/math/doc/html/math_toolkit/sf_poly.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/hermite.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/laguerre.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/legendre.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/sph_harm.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sign_functions.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sinc/
sandbox/math/libs/math/doc/html/math_toolkit/sinc.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sinc/sinc_overview.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sinc/sinc_pi.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/sinc/sinhc_pi.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/spec.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/dist_params.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/complements.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/generic.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/headers.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/objects.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/parameters.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/summary.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/variates.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_conf.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_size_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/c_sharp.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_intervals.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_test.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/dist_construct_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/error_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/f_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/find_location_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/geometric_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nag_library.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nccs_eg/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nccs_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nccs_eg/nccs_power_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_conf.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/normal_example/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/normal_example.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/normal_example/normal_misc.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/paired_st.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_size.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_test.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/two_sample_students_t.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/synopsis.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/threads.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/tr1_ref.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/trans.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/tuning.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/tutorial/
sandbox/math/libs/math/doc/html/math_toolkit/tutorial.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/tutorial/non_templ.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/tutorial/templ.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/tutorial/user_def.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/value_op.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/zetas/
sandbox/math/libs/math/doc/html/math_toolkit/zetas.html (contents, props changed)
sandbox/math/libs/math/doc/html/math_toolkit/zetas/zeta.html (contents, props changed)
sandbox/math/libs/math/doc/html/octonions.html (contents, props changed)
sandbox/math/libs/math/doc/html/overview.html (contents, props changed)
sandbox/math/libs/math/doc/html/perf.html (contents, props changed)
sandbox/math/libs/math/doc/html/policy.html (contents, props changed)
sandbox/math/libs/math/doc/html/quaternions.html (contents, props changed)
sandbox/math/libs/math/doc/html/special.html (contents, props changed)
sandbox/math/libs/math/doc/html/status.html (contents, props changed)
sandbox/math/libs/math/doc/html/toolkit.html (contents, props changed)
sandbox/math/libs/math/doc/html/using_udt.html (contents, props changed)
sandbox/math/libs/math/doc/html/utils.html (contents, props changed)
Added: sandbox/math/libs/math/doc/html/backgrounders.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/backgrounders.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 15. Backgrounders</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/perf_test_app.html" title="The Performance Test Application">
+<link rel="next" href="math_toolkit/sf_implementation.html" title="Additional Implementation Notes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/perf_test_app.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/sf_implementation.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="backgrounders"></a>Chapter 15. Backgrounders</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section"><a href="math_toolkit/sf_implementation.html">Additional Implementation
+ Notes</a></span></dt>
+<dt><span class="section">Relative Error</span></dt>
+<dt><span class="section">The Lanczos Approximation</span></dt>
+<dt><span class="section">The Remez Method</span></dt>
+<dt><span class="section">References</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/perf_test_app.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/sf_implementation.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/constants.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/constants.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 6. Mathematical Constants</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference">
+<link rel="next" href="math_toolkit/constants_intro.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/tr1_ref.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/constants_intro.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="constants"></a>Chapter 6. Mathematical Constants</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/tutorial/non_templ.html">Use in non-template
+ code</a></span></dt>
+<dt><span class="section">Use in template code</span></dt>
+<dt><span class="section"><a href="math_toolkit/tutorial/user_def.html">Use With User-Defined
+ Types</a></span></dt>
+</dl></dd>
+<dt><span class="section">The Mathematical Constants</span></dt>
+<dt><span class="section">Defining New Constants</span></dt>
+<dt><span class="section">FAQs</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/tr1_ref.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/constants_intro.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,207 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 2. Statistical Distributions and Functions</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/contact.html" title="Contact Info and Support">
+<link rel="next" href="math_toolkit/stat_tut.html" title="Statistical Distributions Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/contact.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/stat_tut.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="dist"></a>Chapter 2. Statistical Distributions and Functions</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Statistical Distributions Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section">Overview of Distributions</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/stat_tut/overview/headers.html">Headers and
+ Namespaces</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/overview/objects.html">Distributions
+ are Objects</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/overview/generic.html">Generic operations
+ common to all distributions are non-member functions</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/overview/complements.html">Complements
+ are supported too - and when to use them</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/overview/parameters.html">Parameters
+ can be calculated</a></span></dt>
+<dt><span class="section">Summary</span></dt>
+</dl></dd>
+<dt><span class="section">Worked Examples</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/dist_construct_eg.html">Distribution
+ Construction Examples</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/st_eg.html">Student's t Distribution
+ Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html">Calculating
+ confidence intervals on the mean with the Students-t distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/st_eg/tut_mean_test.html">Testing
+ a sample mean for difference from a "true" mean</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/st_eg/tut_mean_size.html">Estimating
+ how large a sample size would have to become in order to give a significant
+ Students-t test result with a single sample test</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/st_eg/two_sample_students_t.html">Comparing
+ the means of two samples with the Students-t test</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/st_eg/paired_st.html">Comparing
+ two paired samples with the Student's t distribution</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/cs_eg.html">Chi Squared Distribution
+ Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/cs_eg/chi_sq_intervals.html">Confidence
+ Intervals on the Standard Deviation</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/cs_eg/chi_sq_test.html">Chi-Square
+ Test for the Standard Deviation</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html">Estimating
+ the Required Sample Sizes for a Chi-Square Test for the Standard Deviation</a></span></dt>
+</dl></dd>
+<dt><span class="section">F Distribution Examples</span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/binom_eg.html">Binomial Distribution
+ Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html">Binomial
+ Coin-Flipping Example</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html">Binomial
+ Quiz Example</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/binom_eg/binom_conf.html">Calculating
+ Confidence Limits on the Frequency of Occurrence for a Binomial Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/binom_eg/binom_size_eg.html">Estimating
+ Sample Sizes for a Binomial Distribution.</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/geometric_eg.html">Geometric Distribution
+ Examples</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/neg_binom_eg.html">Negative Binomial
+ Distribution Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_conf.html">Calculating
+ Confidence Limits on the Frequency of Occurrence for the Negative Binomial
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html">Estimating
+ Sample Sizes for the Negative Binomial.</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html">Negative
+ Binomial Sales Quota Example.</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html">Negative
+ Binomial Table Printing Example.</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/normal_example.html">Normal Distribution
+ Examples</a></span></dt>
+<dd><dl><dt><span class="section"><a href="math_toolkit/stat_tut/weg/normal_example/normal_misc.html">Some
+ Miscellaneous Examples of the Normal (Gaussian) Distribution</a></span></dt></dl></dd>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html">Inverse
+ Chi-Squared Distribution Bayes Example</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/nccs_eg.html">Non Central Chi
+ Squared Example</a></span></dt>
+<dd><dl><dt><span class="section"><a href="math_toolkit/stat_tut/weg/nccs_eg/nccs_power_eg.html">Tables
+ of the power function of the chi<sup>2</sup> test.</a></span></dt></dl></dd>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/error_eg.html">Error Handling
+ Example</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/find_eg.html">Find Location and
+ Scale Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/find_eg/find_location_eg.html">Find
+ Location (Mean) Example</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html">Find
+ Scale (Standard Deviation) Example</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html">Find
+ mean and standard deviation example</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/nag_library.html">Comparison with
+ C, R, FORTRAN-style Free Functions</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/weg/c_sharp.html">Using the Distributions
+ from Within C#</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="math_toolkit/stat_tut/variates.html">Random Variates and Distribution
+ Parameters</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/stat_tut/dist_params.html">Discrete Probability
+ Distributions</a></span></dt>
+</dl></dd>
+<dt><span class="section">Statistical Distributions Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Non-Member Properties</span></dt>
+<dt><span class="section">Distributions</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/bernoulli_dist.html">Bernoulli
+ Distribution</a></span></dt>
+<dt><span class="section">Beta Distribution</span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/binomial_dist.html">Binomial
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/cauchy_dist.html">Cauchy-Lorentz
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/chi_squared_dist.html">Chi Squared
+ Distribution</a></span></dt>
+<dt><span class="section">Exponential Distribution</span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/extreme_dist.html">Extreme Value
+ Distribution</a></span></dt>
+<dt><span class="section">F Distribution</span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/gamma_dist.html">Gamma (and
+ Erlang) Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/geometric_dist.html">Geometric
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/hypergeometric_dist.html">Hypergeometric
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html">Inverse
+ Chi Squared Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/inverse_gamma_dist.html">Inverse
+ Gamma Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/inverse_gaussian_dist.html">Inverse
+ Gaussian (or Inverse Normal) Distribution</a></span></dt>
+<dt><span class="section">Laplace Distribution</span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/logistic_dist.html">Logistic
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/lognormal_dist.html">Log Normal
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/negative_binomial_dist.html">Negative
+ Binomial Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/nc_beta_dist.html">Noncentral
+ Beta Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/nc_chi_squared_dist.html">Noncentral
+ Chi-Squared Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/nc_f_dist.html">Noncentral F
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/nc_t_dist.html">Noncentral T
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/normal_dist.html">Normal (Gaussian)
+ Distribution</a></span></dt>
+<dt><span class="section">Pareto Distribution</span></dt>
+<dt><span class="section">Poisson Distribution</span></dt>
+<dt><span class="section">Rayleigh Distribution</span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/skew_normal_dist.html">Skew
+ Normal Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/students_t_dist.html">Students
+ t Distribution</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_ref/dists/triangular_dist.html">Triangular
+ Distribution</a></span></dt>
+<dt><span class="section">Uniform Distribution</span></dt>
+<dt><span class="section">Weibull Distribution</span></dt>
+</dl></dd>
+<dt><span class="section">Distribution Algorithms</span></dt>
+</dl></dd>
+<dt><span class="section">Extras/Future Directions</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/contact.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/stat_tut.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/extern_c.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/extern_c.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 5. TR1 and C99 external "C" Functions</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/next_float/float_advance.html" title="Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance">
+<link rel="next" href="math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/next_float/float_advance.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/main_tr1.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="extern_c"></a>Chapter 5. TR1 and C99 external "C" Functions</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">C99 and TR1 C Functions Overview</span></dt>
+<dt><span class="section">C99 C Functions</span></dt>
+<dt><span class="section">TR1 C Functions Quick Reference</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/next_float/float_advance.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/main_tr1.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/gcd_lcm.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/gcd_lcm.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/oct_todo.html" title="To Do">
+<link rel="next" href="math_toolkit/introduction.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/oct_todo.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/introduction.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="gcd_lcm"></a>Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Synopsis</span></dt>
+<dt><span class="section">GCD Function Object</span></dt>
+<dt><span class="section">LCM Function Object</span></dt>
+<dt><span class="section">Run-time GCD & LCM Determination</span></dt>
+<dt><span class="section">Compile time GCD and LCM determination</span></dt>
+<dt><span class="section">Header <boost/math/common_factor.hpp></span></dt>
+<dt><span class="section">Demonstration Program</span></dt>
+<dt><span class="section">Rationale</span></dt>
+<dt><span class="section">History</span></dt>
+<dt><span class="section">Credits</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/oct_todo.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/introduction.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/index.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,100 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Math Toolkit</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="next" href="overview.html" title="Chapter 1. Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav"><a accesskey="n" href="overview.html"><img src="images/next.png" alt="Next"></a></div>
+<div class="book">
+<div class="titlepage">
+<div>
+<div><h1 class="title">
+<a name="math_toolkit"></a>Math Toolkit</h1></div>
+<div><div class="authorgroup">
+<div class="author"><h3 class="author">
+<span class="firstname">Paul A.</span> <span class="surname">Bristow</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Hubert</span> <span class="surname">Holin</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Christopher</span> <span class="surname">Kormanyos</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Bruno</span> <span class="surname">Lalande</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">John</span> <span class="surname">Maddock</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Johan</span> <span class="surname">Råde</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Benjamin</span> <span class="surname">Sobotta</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Gautam</span> <span class="surname">Sewani</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Thijs</span> <span class="surname">van den Berg</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Daryle</span> <span class="surname">Walker</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Xiaogang</span> <span class="surname">Zhang</span>
+</h3></div>
+</div></div>
+<div><p class="releaseinfo">
+This manual is also available in <a href="http://sourceforge.net/projects/boost/files/boost-docs/" target="_top">printer
+ friendly PDF format</a>, and as a CD ISBN 0-9504833-2-X 978-0-9504833-2-0,
+ Classification 519.2-dc22. </p></div>
+<div><p class="copyright">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang</p></div>
+<div><div class="legalnotice">
+<a name="math_toolkit.legal"></a><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></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="chapter">1. Overview</span></dt>
+<dt><span class="chapter">2. Statistical Distributions and Functions</span></dt>
+<dt><span class="chapter">3. Special Functions</span></dt>
+<dt><span class="chapter">4. Floating Point Utilities</span></dt>
+<dt><span class="chapter">5. TR1 and C99 external "C" Functions</span></dt>
+<dt><span class="chapter">6. Mathematical Constants</span></dt>
+<dt><span class="chapter">7. Complex Number Functions</span></dt>
+<dt><span class="chapter">8. Quaternions</span></dt>
+<dt><span class="chapter">9. Octonions</span></dt>
+<dt><span class="chapter">10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)</span></dt>
+<dt><span class="chapter"><a href="toolkit.html">11. Internals (Series, Rationals and Continued Fractions, Root Finding, Function
+ Minimization, Testing and Development Tools)</a></span></dt>
+<dt><span class="chapter"><a href="using_udt.html">12. Use with User-Defined Floating-Point Types - Boost.Multiprecision and
+ others</a></span></dt>
+<dt><span class="chapter">13. Policies: Controlling Precision, Error Handling etc</span></dt>
+<dt><span class="chapter">14. Performance</span></dt>
+<dt><span class="chapter">15. Backgrounders</span></dt>
+<dt><span class="chapter">16. Library Status</span></dt>
+<dt><span class="chapter">17. Indexes</span></dt>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: May 14, 2013 at 12:20:27 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="overview.html"><img src="images/next.png" alt="Next"></a></div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/indexes.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/indexes.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 17. Indexes</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/credits.html" title="Credits and Acknowledgements">
+<link rel="next" href="indexes/s01.html" title="Function Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/credits.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="indexes/s01.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="indexes"></a>Chapter 17. Indexes</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Function Index</span></dt>
+<dt><span class="section">Class Index</span></dt>
+<dt><span class="section">Typedef Index</span></dt>
+<dt><span class="section">Macro Index</span></dt>
+<dt><span class="section">Index</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/credits.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="indexes/s01.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/indexes/s01.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/indexes/s01.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,2481 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function Index</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../indexes.html" title="Chapter 17. Indexes">
+<link rel="prev" href="../indexes.html" title="Chapter 17. Indexes">
+<link rel="next" href="s02.html" title="Class Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../indexes.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="s02.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section id1442567">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id1442567"></a>Function Index</h2></div></div></div>
+<p><a class="link" href="s01.html#idx_id_0">A</a> <a class="link" href="s01.html#idx_id_1">B</a> <a class="link" href="s01.html#idx_id_2">C</a> <a class="link" href="s01.html#idx_id_3">D</a> <a class="link" href="s01.html#idx_id_4">E</a> <a class="link" href="s01.html#idx_id_5">F</a> <a class="link" href="s01.html#idx_id_6">G</a> <a class="link" href="s01.html#idx_id_7">H</a> <a class="link" href="s01.html#idx_id_8">I</a> <a class="link" href="s01.html#idx_id_9">J</a> <a class="link" href="s01.html#idx_id_10">K</a> <a class="link" href="s01.html#idx_id_11">L</a> <a class="link" href="s01.html#idx_id_12">M</a> <a class="link" href="s01.html#idx_id_13">N</a> <a class="link" href="s01.html#idx_id_14">O</a> <a class="link" href="s01.html#idx_id_15">P</a> <a class="link" href="s01.html#idx_id_16">Q</a> <a class="link" href="s01.html#idx_id_17">R</a> <a class="link" href="s01.html#idx_id_18">S</a> <a class="link" href="s01.html#idx_id_19">T</a> <a class="link" href="s01.html#idx_id_20">U</a> <a class="link" href=
"s01.html#idx_id_21">V</a> <a class="link" href="s01.html#idx_id_22">W</a> <a class="link" href="s01.html#idx_id_23">Z</a></p>
+<div class="variablelist"><dl class="variablelist">
+<dt>
+<a name="idx_id_0"></a><span class="term">A</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">acosh</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/inv_hyper/acosh.html" title="acosh"><span class="index-entry-level-1">acosh</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">acoshf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">acoshl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_ai</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/ai.html" title="Airy Ai Function"><span class="index-entry-level-1">Airy Ai Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_ai_prime</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/aip.html" title="Airy Ai' Function"><span class="index-entry-level-1">Airy Ai' Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_bi</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/bi.html" title="Airy Bi Function"><span class="index-entry-level-1">Airy Bi Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_bi_prime</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/bip.html" title="Airy Bi' Function"><span class="index-entry-level-1">Airy Bi' Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">asinh</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/inv_hyper/asinh.html" title="asinh"><span class="index-entry-level-1">asinh</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">asinhf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">asinhl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_laguerre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_laguerref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_laguerrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_legendre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_legendref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_legendrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">atanh</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/inv_hyper/atanh.html" title="atanh"><span class="index-entry-level-1">atanh</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">atanhf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">atanhl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_1"></a><span class="term">B</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">beta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/sf_beta/beta_function.html" title="Beta"><span class="index-entry-level-1">Beta</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_binomial.html" title="Binomial Coefficients"><span class="index-entry-level-1">Binomial Coefficients</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_beta_a_b_" title="Table 3.10. Errors In the Function beta(a, b, x)"><span class="index-entry-level-1">Errors In the Function beta(a, b, x)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">Incomplete Beta Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">betac</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_betac_a_b" title="Table 3.11. Errors In the Function betac(a,b,x)"><span class="index-entry-level-1">Errors In the Function betac(a,b,x)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">Incomplete Beta Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">betaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">betal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">binomial_coefficient</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_binomial.html" title="Binomial Coefficients"><span class="index-entry-level-1">Binomial Coefficients</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">brent_find_minima</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/minima.html" title="Locating Function Minima: Brent's algorithm"><span class="index-entry-level-1">Locating Function Minima: Brent's algorithm</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_2"></a><span class="term">C</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">c</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cbrt</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/powers/cbrt.html" title="cbrt"><span class="index-entry-level-1">cbrt</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cbrtf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cbrtl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cdf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html" title="Binomial Coin-Flipping Example"><span class="index-entry-level-1">Binomial Coin-Flipping Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies"><span class="index-entry-level-1">Discrete Quantile Policies</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/future.html" title="Extras/Future Directions"><span class="index-entry-level-1">Extras/Future Directions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/generic.html" title="Generic operations common to all distributions are non-member functions"><span class="index-entry-level-1">Generic operations common to all distributions are non-member functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">changesign</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">Sign Manipulation Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">checked_narrowing_cast</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/error_handling.html" title="Error Handling"><span class="index-entry-level-1">Error Handling</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">chf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_1f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_1l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_2</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_2f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_2l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_3</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_3f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_3l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conf_hyperg</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conf_hypergf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conf_hypergl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conj</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">continued_fraction_a</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/cf.html" title="Continued Fraction Evaluation"><span class="index-entry-level-1">Continued Fraction Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">continued_fraction_b</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/cf.html" title="Continued Fraction Evaluation"><span class="index-entry-level-1">Continued Fraction Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">copysign</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">Sign Manipulation Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">copysignf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">copysignl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/cos_pi.html" title="cos_pi"><span class="index-entry-level-0">cos_pi</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cylindrical</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_create.html" title="Octonion Creation Functions"><span class="index-entry-level-1">Octonion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cylindrospherical</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_i</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Modified Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_if</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_il</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_j</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">Known Issues, and TODO List</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_jf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_jl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_j_zero</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Finding Zeros of Bessel Functions of the First and Second Kinds</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_k</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Modified Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_kf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_kl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_neumann</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">Known Issues, and TODO List</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_neumannf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_neumannl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_neumann_zero</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Finding Zeros of Bessel Functions of the First and Second Kinds</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_3"></a><span class="term">D</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/digamma.html" title="Digamma"><span class="index-entry-level-0">digamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_double_factorial.html" title="Double Factorial"><span class="index-entry-level-0">double_factorial</span></a></p></li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_4"></a><span class="term">E</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_1.html" title="Elliptic Integrals of the First Kind - Legendre Form"><span class="index-entry-level-1">Elliptic Integrals of the First Kind - Legendre Form</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_1f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_1l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_2</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_2.html" title="Elliptic Integrals of the Second Kind - Legendre Form"><span class="index-entry-level-1">Elliptic Integrals of the Second Kind - Legendre Form</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_2f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_2l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_3</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_3.html" title="Elliptic Integrals of the Third Kind - Legendre Form"><span class="index-entry-level-1">Elliptic Integrals of the Third Kind - Legendre Form</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_3f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_3l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_rc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">Elliptic Integrals - Carlson Form</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_rd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">Elliptic Integrals - Carlson Form</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_rf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">Elliptic Integrals - Carlson Form</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_rj</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">Elliptic Integrals - Carlson Form</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">epsilon</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/minima.html" title="Locating Function Minima: Brent's algorithm"><span class="index-entry-level-1">Locating Function Minima: Brent's algorithm</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html" title="Error Functions"><span class="index-entry-level-1">Error Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html#math_toolkit.sf_erf.error_function.errors_in_the_function_erf_z" title="Table 3.12. Errors In the Function erf(z)"><span class="index-entry-level-1">Errors In the Function erf(z)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html" title="Error Functions"><span class="index-entry-level-1">Error Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html#math_toolkit.sf_erf.error_function.errors_in_the_function_erfc_z" title="Table 3.13. Errors In the Function erfc(z)"><span class="index-entry-level-1">Errors In the Function erfc(z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfcf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfcl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfc_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_inv.html" title="Error Function Inverses"><span class="index-entry-level-1">Error Function Inverses</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erff</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erf_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_inv.html" title="Error Function Inverses"><span class="index-entry-level-1">Error Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluate_even_polynomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluate_odd_polynomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluate_polynomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluate_rational</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">exp2</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">exp2f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">exp2l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_n.html#math_toolkit.expint.expint_n.errors_in_the_function_expint_n_" title="Table 3.31. Errors In the Function expint(n, z)"><span class="index-entry-level-1">Errors In the Function expint(n, z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html#math_toolkit.expint.expint_i.errors_in_the_function_expint_z" title="Table 3.32. Errors In the Function expint(z)"><span class="index-entry-level-1">Errors In the Function expint(z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html" title="Exponential Integral Ei"><span class="index-entry-level-1">Exponential Integral Ei</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_n.html" title="Exponential Integral En"><span class="index-entry-level-1">Exponential Integral En</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expm1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/powers/expm1.html" title="expm1"><span class="index-entry-level-1">expm1</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expm1f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expm1l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">e_float</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/e_float.html" title="Using e_float Library"><span class="index-entry-level-1">Using e_float Library</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_5"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-0">factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_falling_factorial.html" title="Falling Factorial"><span class="index-entry-level-0">falling_factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fdim</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fdimf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fdiml</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_beta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_degrees_of_freedom</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_location</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dist_algorithms.html" title="Distribution Algorithms"><span class="index-entry-level-1">Distribution Algorithms</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_lower_bound_on_p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_non_centrality</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_scale</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dist_algorithms.html" title="Distribution Algorithms"><span class="index-entry-level-1">Distribution Algorithms</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_upper_bound_on_p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_advance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_advance.html" title="Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance"><span class="index-entry-level-1">Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_distance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_advance.html" title="Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance"><span class="index-entry-level-1">Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_distance.html" title="Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance"><span class="index-entry-level-1">Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_next</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_next.html" title="Finding the Next Greater Representable Value (float_next)"><span class="index-entry-level-1">Finding the Next Greater Representable Value (float_next)</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_prior</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_prior.html" title="Finding the Next Smaller Representable Value (float_prior)"><span class="index-entry-level-1">Finding the Next Smaller Representable Value (float_prior)</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmax</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmaxf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmaxl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmin</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fminf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fminl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fpclassify</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_6"></a><span class="term">G</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_gamma_p_a" title="Table 3.3. Errors In the Function gamma_p(a,z)"><span class="index-entry-level-1">Errors In the Function gamma_p(a,z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Incomplete Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_p_derivative</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function"><span class="index-entry-level-1">Derivative of the Incomplete Gamma Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_p_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_p_inva</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_q</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_gamma_q_a" title="Table 3.4. Errors In the Function gamma_q(a,z)"><span class="index-entry-level-1">Errors In the Function gamma_q(a,z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Incomplete Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_q_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_q_inva</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gcd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">get</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/user_def.html" title="Use With User-Defined Types"><span class="index-entry-level-1">Use With User-Defined Types</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">get_from_string</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">get_user_parameter_info</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_7"></a><span class="term">H</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">halley_iterate</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hazard</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hermite</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/hermite.html" title="Hermite Polynomials"><span class="index-entry-level-1">Hermite Polynomials</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hermitef</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hermitel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hermite_next</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/hermite.html" title="Hermite Polynomials"><span class="index-entry-level-1">Hermite Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hyperg</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypergf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypergl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypot</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/powers/hypot.html" title="hypot"><span class="index-entry-level-1">hypot</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypotf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypotl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_8"></a><span class="term">I</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_ibeta_a_b" title="Table 3.8. Errors In the Function ibeta(a,b,x)"><span class="index-entry-level-1">Errors In the Function ibeta(a,b,x)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">Incomplete Beta Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibetac</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_ibetac_a_" title="Table 3.9. Errors In the Function ibetac(a,b,x)"><span class="index-entry-level-1">Errors In the Function ibetac(a,b,x)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">Incomplete Beta Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibetac_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibetac_inva</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibetac_invb</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta_derivative</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function"><span class="index-entry-level-1">Derivative of the Incomplete Beta Function</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">F Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta_inva</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta_invb</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ilogb</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ilogbf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ilogbl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">infinity</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/error_eg.html" title="Error Handling Example"><span class="index-entry-level-1">Error Handling Example</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">insert</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">iround</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">Rounding Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">isfinite</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">isinf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">isnan</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">isnormal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">itrunc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">Truncation Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_9"></a><span class="term">J</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_cd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_cd.html" title="Jacobi Elliptic Function cd"><span class="index-entry-level-1">Jacobi Elliptic Function cd</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_cn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_cn.html" title="Jacobi Elliptic Function cn"><span class="index-entry-level-1">Jacobi Elliptic Function cn</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_cs</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_cs.html" title="Jacobi Elliptic Function cs"><span class="index-entry-level-1">Jacobi Elliptic Function cs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_dc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_dc.html" title="Jacobi Elliptic Function dc"><span class="index-entry-level-1">Jacobi Elliptic Function dc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_dn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_dn.html" title="Jacobi Elliptic Function dn"><span class="index-entry-level-1">Jacobi Elliptic Function dn</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_ds</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_ds.html" title="Jacobi Elliptic Function ds"><span class="index-entry-level-1">Jacobi Elliptic Function ds</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_elliptic</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN"><span class="index-entry-level-1">Jacobi Elliptic SN, CN and DN</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_nc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_nc.html" title="Jacobi Elliptic Function nc"><span class="index-entry-level-1">Jacobi Elliptic Function nc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_nd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_nd.html" title="Jacobi Elliptic Function nd"><span class="index-entry-level-1">Jacobi Elliptic Function nd</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_ns</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_ns.html" title="Jacobi Elliptic Function ns"><span class="index-entry-level-1">Jacobi Elliptic Function ns</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_sc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_sc.html" title="Jacobi Elliptic Function sc"><span class="index-entry-level-1">Jacobi Elliptic Function sc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_sd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_sd.html" title="Jacobi Elliptic Function sd"><span class="index-entry-level-1">Jacobi Elliptic Function sd</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_sn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_sn.html" title="Jacobi Elliptic Function sn"><span class="index-entry-level-1">Jacobi Elliptic Function sn</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_10"></a><span class="term">K</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">kahan_sum_series</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">Series Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">kurtosis</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">kurtosis_excess</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_11"></a><span class="term">L</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">l1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laguerre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/laguerre.html" title="Laguerre (and Associated) Polynomials"><span class="index-entry-level-1">Laguerre (and Associated) Polynomials</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laguerref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laguerrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laguerre_next</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/laguerre.html" title="Laguerre (and Associated) Polynomials"><span class="index-entry-level-1">Laguerre (and Associated) Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lcm</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ldexp</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendre_next</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/legendre.html" title="Legendre (and Associated) Polynomials"><span class="index-entry-level-1">Legendre (and Associated) Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendre_p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/legendre.html" title="Legendre (and Associated) Polynomials"><span class="index-entry-level-1">Legendre (and Associated) Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendre_q</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/legendre.html" title="Legendre (and Associated) Polynomials"><span class="index-entry-level-1">Legendre (and Associated) Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lgamma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">Log Gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lgammaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lgammal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llrint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llrintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llrintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llround</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">Rounding Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llroundf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llroundl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lltrunc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">Truncation Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">location</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">Extreme Value Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">Find Location (Mean) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">Find Scale (Standard Deviation) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log1p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/powers/log1p.html" title="log1p"><span class="index-entry-level-1">log1p</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">Series Evaluation</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log1pf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log1pl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log2</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">Compile Time Power of a Runtime Base</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log2f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log2l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">logb</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">logbf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">logbl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lrint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lrintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lrintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lround</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">Rounding Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lroundf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lroundl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ltrunc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">Truncation Functions</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_12"></a><span class="term">M</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">make_periodic_param</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">make_policy</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">make_power_param</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">make_random_param</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mean</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/dist_construct_eg.html" title="Distribution Construction Examples"><span class="index-entry-level-1">Distribution Construction Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">Find Location (Mean) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">Find Scale (Standard Deviation) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">Poisson Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">Uniform Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">median</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mode</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">History and What's New</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">msg</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">multipolar</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_create.html" title="Octonion Creation Functions"><span class="index-entry-level-1">Octonion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_13"></a><span class="term">N</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nan</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets/facets_intro.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets/reference.html" title="Reference"><span class="index-entry-level-1">Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nanf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nanl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nearbyint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nearbyintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nearbyintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">newton_raphson_iterate</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nextafter</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/nextafter.html" title="Finding the Next Representable Value in a Specific Direction (nextafter)"><span class="index-entry-level-1">Finding the Next Representable Value in a Specific Direction (nextafter)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">History and What's New</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nextafterf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nextafterl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nexttoward</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nexttowardf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nexttowardl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">norm</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_14"></a><span class="term">O</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">octonion</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_mem_fun.html" title="Octonion Member Functions"><span class="index-entry-level-1">Octonion Member Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">Octonion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">Template Class octonion</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">owens_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/owens_t.html" title="Owen's T function"><span class="index-entry-level-1">Owen's T function</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_15"></a><span class="term">P</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pdf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/generic.html" title="Generic operations common to all distributions are non-member functions"><span class="index-entry-level-1">Generic operations common to all distributions are non-member functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/powm1.html" title="powm1"><span class="index-entry-level-0">powm1</span></a></p></li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_16"></a><span class="term">Q</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">quantile</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/complements.html" title="Complements are supported too - and when to use them"><span class="index-entry-level-1">Complements are supported too - and when to use them</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_concept.html" title="Conceptual Requirements for Distribution Types"><span class="index-entry-level-1">Conceptual Requirements for Distribution Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">Negative Binomial Sales Quota Example.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/normal_example/normal_misc.html" title="Some Miscellaneous Examples of the Normal (Gaussian) Distribution"><span class="index-entry-level-1">Some Miscellaneous Examples of the Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">quaternion</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_mem_fun.html" title="Quaternion Member Functions"><span class="index-entry-level-1">Quaternion Member Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">Quaternion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">Template Class quaternion</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_17"></a><span class="term">R</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">r</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">range</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compilers_overview.html" title="Compilers"><span class="index-entry-level-1">Compilers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">relative_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/error_test.html" title="Relative Error and Testing"><span class="index-entry-level-1">Relative Error and Testing</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remainder</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remainderf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remainderl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remquo</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remquof</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remquol</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">riemann_zeta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">riemann_zetaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">riemann_zetal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_rising_factorial.html" title="Rising Factorial"><span class="index-entry-level-0">rising_factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">round</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">Rounding Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">roundf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">roundl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_18"></a><span class="term">S</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalbln</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalblnf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalblnl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalbn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalbnf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalbnl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scale</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">Extreme Value Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html" title="Find mean and standard deviation example"><span class="index-entry-level-1">Find mean and standard deviation example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">Find Scale (Standard Deviation) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example"><span class="index-entry-level-1">Inverse Chi-Squared Distribution Bayes Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">Pareto Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">schroeder_iterate</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">semipolar</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">shape</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">Pareto Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sign</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">Sign Manipulation Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">signbit</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">Sign Manipulation Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sinc/sinc_pi.html" title="sinc_pi"><span class="index-entry-level-0">sinc_pi</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sinc/sinhc_pi.html" title="sinhc_pi"><span class="index-entry-level-0">sinhc_pi</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/sin_pi.html" title="sin_pi"><span class="index-entry-level-0">sin_pi</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">skewness</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">Bernoulli Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">spherical</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_create.html" title="Octonion Creation Functions"><span class="index-entry-level-1">Octonion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">spherical_harmonic</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/sph_harm.html" title="Spherical Harmonics"><span class="index-entry-level-1">Spherical Harmonics</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">spherical_harmonic_i</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/sph_harm.html" title="Spherical Harmonics"><span class="index-entry-level-1">Spherical Harmonics</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">spherical_harmonic_r</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/sph_harm.html" title="Spherical Harmonics"><span class="index-entry-level-1">Spherical Harmonics</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_bessel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Spherical Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_besself</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_bessell</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_legendre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_legendref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_legendrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_neumann</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Spherical Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_neumannf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_neumannl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/sqrt1pm1.html" title="sqrt1pm1"><span class="index-entry-level-0">sqrt1pm1</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">standard_deviation</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">Find Location (Mean) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">Find Scale (Standard Deviation) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sum_series</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">Series Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sup</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_19"></a><span class="term">T</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html" title="Calculating confidence intervals on the mean with the Students-t distribution"><span class="index-entry-level-1">Calculating confidence intervals on the mean with the Students-t distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">Known Issues, and TODO List</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">test</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/error_test.html" title="Relative Error and Testing"><span class="index-entry-level-1">Relative Error and Testing</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/normal_example/normal_misc.html" title="Some Miscellaneous Examples of the Normal (Gaussian) Distribution"><span class="index-entry-level-1">Some Miscellaneous Examples of the Normal (Gaussian) Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/ad_hoc_sf_policies.html" title="Changing the Policy on an Ad Hoc Basis for the Special Functions"><span class="index-entry-level-1">Changing the Policy on an Ad Hoc Basis for the Special Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_tgamma_a_" title="Table 3.6. Errors In the Function tgamma(a,z)"><span class="index-entry-level-1">Errors In the Function tgamma(a,z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/tgamma.html" title="Gamma"><span class="index-entry-level-1">Gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Incomplete Gamma Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">Log Gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma1pm1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/tgamma.html" title="Gamma"><span class="index-entry-level-1">Gamma</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgammaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgammal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma_delta_ratio</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.errors_in_the_function_tgamma_de" title="Table 3.1. Errors In the Function tgamma_delta_ratio(a, delta)"><span class="index-entry-level-1">Errors In the Function tgamma_delta_ratio(a, delta)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions"><span class="index-entry-level-1">Ratios of Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma_lower</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_tgamma_lo" title="Table 3.5. Errors In the Function tgamma_lower(a,z)"><span class="index-entry-level-1">Errors In the Function tgamma_lower(a,z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Incomplete Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma_ratio</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.errors_in_the_function_tgamma_ra" title="Table 3.2. Errors In the Function tgamma_ratio(a, b)"><span class="index-entry-level-1">Errors In the Function tgamma_ratio(a, b)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions"><span class="index-entry-level-1">Ratios of Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tol</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">trunc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">Truncation Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">truncf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">truncl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_20"></a><span class="term">U</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">unreal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_mem_fun.html" title="Octonion Member Functions"><span class="index-entry-level-1">Octonion Member Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">Octonion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_mem_fun.html" title="Quaternion Member Functions"><span class="index-entry-level-1">Quaternion Member Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">Quaternion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">Template Class octonion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">Template Class quaternion</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_denorm_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_domain_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_evaluation_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_indeterminate_result_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_overflow_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">Compile Time Power of a Runtime Base</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_pole_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_rounding_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_underflow_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_21"></a><span class="term">V</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">value</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_distance.html" title="Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance"><span class="index-entry-level-1">Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/generic.html" title="Generic operations common to all distributions are non-member functions"><span class="index-entry-level-1">Generic operations common to all distributions are non-member functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">History and What's New</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">variance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html" title="Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation"><span class="index-entry-level-1">Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example"><span class="index-entry-level-1">Inverse Chi-Squared Distribution Bayes Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">Uniform Distribution</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_22"></a><span class="term">W</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">write_code</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">write_csv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_23"></a><span class="term">Z</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">zeta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/zetas/zeta.html#math_toolkit.zetas.zeta.errors_in_the_function_zeta_z" title="Table 3.30. Errors In the Function zeta(z)"><span class="index-entry-level-1">Errors In the Function zeta(z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html" title="Exponential Integral Ei"><span class="index-entry-level-1">Exponential Integral Ei</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/zetas/zeta.html" title="Riemann Zeta Function"><span class="index-entry-level-1">Riemann Zeta Function</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../indexes.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="s02.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/indexes/s02.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/indexes/s02.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,267 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class Index</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../indexes.html" title="Chapter 17. Indexes">
+<link rel="prev" href="s01.html" title="Function Index">
+<link rel="next" href="s03.html" title="Typedef Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="s01.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="s03.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section id1462160">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id1462160"></a>Class Index</h2></div></div></div>
+<p><a class="link" href="s02.html#idx_id_25">B</a> <a class="link" href="s02.html#idx_id_26">C</a> <a class="link" href="s02.html#idx_id_27">D</a> <a class="link" href="s02.html#idx_id_28">E</a> <a class="link" href="s02.html#idx_id_29">F</a> <a class="link" href="s02.html#idx_id_30">G</a> <a class="link" href="s02.html#idx_id_31">H</a> <a class="link" href="s02.html#idx_id_32">I</a> <a class="link" href="s02.html#idx_id_35">L</a> <a class="link" href="s02.html#idx_id_36">M</a> <a class="link" href="s02.html#idx_id_37">N</a> <a class="link" href="s02.html#idx_id_38">O</a> <a class="link" href="s02.html#idx_id_39">P</a> <a class="link" href="s02.html#idx_id_40">Q</a> <a class="link" href="s02.html#idx_id_41">R</a> <a class="link" href="s02.html#idx_id_42">S</a> <a class="link" href="s02.html#idx_id_43">T</a> <a class="link" href="s02.html#idx_id_44">U</a> <a class="link" href="s02.html#idx_id_46">W</a></p>
+<div class="variablelist"><dl class="variablelist">
+<dt>
+<a name="idx_id_25"></a><span class="term">B</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-0">bernoulli_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-0">beta_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-0">binomial_distribution</span></a></p></li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_26"></a><span class="term">C</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cauchy_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-0">chi_squared_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">construction_traits</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/user_def.html" title="Use With User-Defined Types"><span class="index-entry-level-1">Use With User-Defined Types</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_27"></a><span class="term">D</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">default_policy</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_28"></a><span class="term">E</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">eps_tolerance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">equal_ceil</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">equal_floor</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">equal_nearest_integer</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-0">exponential_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-0">extreme_value_distribution</span></a></p></li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_29"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fisher_f_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">F Distribution</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_30"></a><span class="term">G</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gcd_evaluator</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/gcd_function_object.html" title="GCD Function Object"><span class="index-entry-level-1">GCD Function Object</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-0">geometric_distribution</span></a></p></li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_31"></a><span class="term">H</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-0">hypergeometric_distribution</span></a></p></li></ul></div></dd>
+<dt>
+<a name="idx_id_32"></a><span class="term">I</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-0">inverse_chi_squared_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-0">inverse_gamma_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">inverse_gaussian_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_35"></a><span class="term">L</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-0">laplace_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lcm_evaluator</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lcm_function_object.html" title="LCM Function Object"><span class="index-entry-level-1">LCM Function Object</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log1p_series</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">Series Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-0">logistic_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lognormal_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_36"></a><span class="term">M</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">max_factorial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-1">Factorial</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_37"></a><span class="term">N</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-0">negative_binomial_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nonfinite_num_get</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets.html" title="Facets for Floating-Point Infinities and NaNs"><span class="index-entry-level-1">Facets for Floating-Point Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nonfinite_num_put</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets.html" title="Facets for Floating-Point Infinities and NaNs"><span class="index-entry-level-1">Facets for Floating-Point Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_beta_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_chi_squared_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_f_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">Noncentral F Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_t_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">Noncentral T Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">normalise</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">normal_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_38"></a><span class="term">O</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">octonion</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_non_mem.html" title="Octonion Non-Member Operators"><span class="index-entry-level-1">Octonion Non-Member Operators</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">Octonion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">Template Class octonion</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_39"></a><span class="term">P</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-0">pareto_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-0">poisson_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">promote_args</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_40"></a><span class="term">Q</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">quaternion</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_non_mem.html" title="Quaternion Non-Member Operators"><span class="index-entry-level-1">Quaternion Non-Member Operators</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">Quaternion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">Template Class quaternion</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_41"></a><span class="term">R</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-0">rayleigh_distribution</span></a></p></li></ul></div></dd>
+<dt>
+<a name="idx_id_42"></a><span class="term">S</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-0">skew_normal_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-0">students_t_distribution</span></a></p></li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_43"></a><span class="term">T</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">test_data</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">triangular_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></strong></span></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_44"></a><span class="term">U</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-0">uniform_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">upper_incomplete_gamma_fract</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_46"></a><span class="term">W</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-0">weibull_distribution</span></a></p></li></ul></div></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="s01.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="s03.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/indexes/s03.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/indexes/s03.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,412 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Typedef Index</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../indexes.html" title="Chapter 17. Indexes">
+<link rel="prev" href="s02.html" title="Class Index">
+<link rel="next" href="s04.html" title="Macro Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="s02.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="s04.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section id1463240">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id1463240"></a>Typedef Index</h2></div></div></div>
+<p><a class="link" href="s03.html#idx_id_48">A</a> <a class="link" href="s03.html#idx_id_49">B</a> <a class="link" href="s03.html#idx_id_50">C</a> <a class="link" href="s03.html#idx_id_51">D</a> <a class="link" href="s03.html#idx_id_52">E</a> <a class="link" href="s03.html#idx_id_53">F</a> <a class="link" href="s03.html#idx_id_54">G</a> <a class="link" href="s03.html#idx_id_55">H</a> <a class="link" href="s03.html#idx_id_56">I</a> <a class="link" href="s03.html#idx_id_59">L</a> <a class="link" href="s03.html#idx_id_61">N</a> <a class="link" href="s03.html#idx_id_62">O</a> <a class="link" href="s03.html#idx_id_63">P</a> <a class="link" href="s03.html#idx_id_65">R</a> <a class="link" href="s03.html#idx_id_66">S</a> <a class="link" href="s03.html#idx_id_67">T</a> <a class="link" href="s03.html#idx_id_68">U</a> <a class="link" href="s03.html#idx_id_69">V</a> <a class="link" href="s03.html#idx_id_70">W</a></p>
+<div class="variablelist"><dl class="variablelist">
+<dt>
+<a name="idx_id_48"></a><span class="term">A</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assert_undefined_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_49"></a><span class="term">B</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">bernoulli</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">Bernoulli Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">beta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">binomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_50"></a><span class="term">C</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cauchy</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">Find Location (Mean) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html" title="Find mean and standard deviation example"><span class="index-entry-level-1">Find mean and standard deviation example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">chi_squared</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_51"></a><span class="term">D</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">denorm_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">discrete_quantile_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">domain_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">double_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_52"></a><span class="term">E</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluation_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">exponential</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">Exponential Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">extreme_value</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">Extreme Value Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_53"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fisher_f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">F Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/ad_hoc_dist_policies.html" title="Setting Policies for Distributions on an Ad Hoc Basis"><span class="index-entry-level-1">Setting Policies for Distributions on an Ad Hoc Basis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_54"></a><span class="term">G</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">geometric</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_55"></a><span class="term">H</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypergeometric</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Hypergeometric Distribution</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_56"></a><span class="term">I</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">indeterminate_result_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">inverse_chi_squared</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">inverse_gaussian</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_59"></a><span class="term">L</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laplace</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">logistic</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lognormal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_61"></a><span class="term">N</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">negative_binomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/dist_construct_eg.html" title="Distribution Construction Examples"><span class="index-entry-level-1">Distribution Construction Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_beta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_chi_squared</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">Noncentral F Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">Noncentral T Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">normal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">Geometric Distribution Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_62"></a><span class="term">O</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">overflow_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_63"></a><span class="term">P</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pareto</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">Pareto Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">poisson</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">Poisson Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pole_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">policy_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">Bernoulli Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">Exponential Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Hypergeometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">Noncentral F Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">Noncentral T Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">Poisson Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">Rayleigh Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">precision_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">promote_double_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">promote_float_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_65"></a><span class="term">R</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rayleigh</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">Rayleigh Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rounding_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_66"></a><span class="term">S</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">second_argument_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/gcd_function_object.html" title="GCD Function Object"><span class="index-entry-level-1">GCD Function Object</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lcm_function_object.html" title="LCM Function Object"><span class="index-entry-level-1">LCM Function Object</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">students_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/namespaces.html" title="Namespaces"><span class="index-entry-level-1">Namespaces</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_67"></a><span class="term">T</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">triangular</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_68"></a><span class="term">U</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">underflow_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">uniform</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">Uniform Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_69"></a><span class="term">V</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">value_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">Bernoulli Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">Exponential Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">Extreme Value Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">F Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Hypergeometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">Noncentral F Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">Noncentral T Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_typedefs.html" title="Octonion Member Typedefs"><span class="index-entry-level-1">Octonion Member Typedefs</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">Octonion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">Pareto Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">Poisson Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/polynomials.html" title="Polynomials"><span class="index-entry-level-1">Polynomials</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/mem_typedef.html" title="Quaternion Member Typedefs"><span class="index-entry-level-1">Quaternion Member Typedefs</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">Quaternion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">Rayleigh Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">Template Class octonion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">Template Class quaternion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">Uniform Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_70"></a><span class="term">W</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">weibull</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li></ul></div>
+</li></ul></div></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="s02.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="s04.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/indexes/s04.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/indexes/s04.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,294 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro Index</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../indexes.html" title="Chapter 17. Indexes">
+<link rel="prev" href="s03.html" title="Typedef Index">
+<link rel="next" href="s05.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="s03.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="s05.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section id1466235">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id1466235"></a>Macro Index</h2></div></div></div>
+<p><a class="link" href="s04.html#idx_id_73">B</a> <a class="link" href="s04.html#idx_id_77">F</a></p>
+<div class="variablelist"><dl class="variablelist">
+<dt>
+<a name="idx_id_73"></a><span class="term">B</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_CONSTANTS_GENERATE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_DEFINE_MATH_CONSTANT</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_faq.html" title="FAQs"><span class="index-entry-level-1">FAQs</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_FPU_EXCEPTION_GUARD</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_HAS_LOG1P</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/log1p.html" title="log1p"><span class="index-entry-level-1">log1p</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_ASSERT_UNDEFINED_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/changing_policy_defaults.html" title="Changing the Policy Defaults"><span class="index-entry-level-1">Changing the Policy Defaults</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/assert_undefined.html" title="Mathematically Undefined Function Policies"><span class="index-entry-level-1">Mathematically Undefined Function Policies</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_CONTROL_FP</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DECLARE_DISTRIBUTIONS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DENORM_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DIGITS10_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html" title="Binomial Quiz Example"><span class="index-entry-level-1">Binomial Quiz Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">Geometric Distribution Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">Negative Binomial Sales Quota Example.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DOMAIN_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/error_eg.html" title="Error Handling Example"><span class="index-entry-level-1">Error Handling Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_EVALUATION_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_EXPLICIT_TEMPLATE_TYPE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INSTRUMENT_CODE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INSTRUMENT_FPU</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INSTRUMENT_VARIABLE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INT_TABLE_TYPE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INT_VALUE_SUFFIX</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_MAX_POLY_ORDER</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_MAX_ROOT_ITERATION_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/iteration_pol.html" title="Iteration Limits Policies"><span class="index-entry-level-1">Iteration Limits Policies</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_MAX_SERIES_ITERATION_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/iteration_pol.html" title="Iteration Limits Policies"><span class="index-entry-level-1">Iteration Limits Policies</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compilers_overview.html#math_toolkit.compilers_overview.supported_tested_compilers" title="Table 1.9. Supported/Tested Compilers"><span class="index-entry-level-1">Supported/Tested Compilers</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_NO_REAL_CONCEPT_TESTS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_OVERFLOW_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/changing_policy_defaults.html" title="Changing the Policy Defaults"><span class="index-entry-level-1">Changing the Policy Defaults</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">Compile Time Power of a Runtime Base</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/error_eg.html" title="Error Handling Example"><span class="index-entry-level-1">Error Handling Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">Geometric Distribution Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">Negative Binomial Sales Quota Example.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_POLE_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_POLY_METHOD</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_PROMOTE_DOUBLE_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_PROMOTE_FLOAT_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_RATIONAL_METHOD</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_ROUNDING_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_SMALL_CONSTANT</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_STD_USING</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_UNDERFLOW_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_USE_C99</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_77"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_INFINITE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_NAN</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_NORMAL</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_SUBNORMAL</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_ZERO</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="s03.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="s05.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/indexes/s05.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/indexes/s05.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,5316 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../indexes.html" title="Chapter 17. Indexes">
+<link rel="prev" href="s04.html" title="Macro Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="s04.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
+</div>
+<div class="section id1468763">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id1468763"></a>Index</h2></div></div></div>
+<p><a class="link" href="s05.html#idx_id_96">A</a> <a class="link" href="s05.html#idx_id_97">B</a> <a class="link" href="s05.html#idx_id_98">C</a> <a class="link" href="s05.html#idx_id_99">D</a> <a class="link" href="s05.html#idx_id_100">E</a> <a class="link" href="s05.html#idx_id_101">F</a> <a class="link" href="s05.html#idx_id_102">G</a> <a class="link" href="s05.html#idx_id_103">H</a> <a class="link" href="s05.html#idx_id_104">I</a> <a class="link" href="s05.html#idx_id_105">J</a> <a class="link" href="s05.html#idx_id_106">K</a> <a class="link" href="s05.html#idx_id_107">L</a> <a class="link" href="s05.html#idx_id_108">M</a> <a class="link" href="s05.html#idx_id_109">N</a> <a class="link" href="s05.html#idx_id_110">O</a> <a class="link" href="s05.html#idx_id_111">P</a> <a class="link" href="s05.html#idx_id_112">Q</a> <a class="link" href="s05.html#idx_id_113">R</a> <a class="link" href="s05.html#idx_id_114">S</a> <a class="link" href="s05.html#idx_id_115">T</a> <a class="link" href="s05.html#idx_id_116">
U</a> <a class="link" href="s05.html#idx_id_117">V</a> <a class="link" href="s05.html#idx_id_118">W</a> <a class="link" href="s05.html#idx_id_119">Z</a></p>
+<div class="variablelist"><dl class="variablelist">
+<dt>
+<a name="idx_id_96"></a><span class="term">A</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">acosh</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/inv_hyper/acosh.html" title="acosh"><span class="index-entry-level-1">acosh</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">acoshf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">acoshl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_advance.html" title="Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance"><span class="index-entry-level-1">float_advance</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_advance.html" title="Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance"><span class="index-entry-level-1">float_distance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Airy Ai Function</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/ai.html" title="Airy Ai Function"><span class="index-entry-level-1">airy_ai</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Airy Ai' Function</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/aip.html" title="Airy Ai' Function"><span class="index-entry-level-1">airy_ai_prime</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Airy Bi Function</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/bi.html" title="Airy Bi Function"><span class="index-entry-level-1">airy_bi</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Airy Bi' Function</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/bip.html" title="Airy Bi' Function"><span class="index-entry-level-1">airy_bi_prime</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_ai</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/ai.html" title="Airy Ai Function"><span class="index-entry-level-1">Airy Ai Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_ai_prime</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/aip.html" title="Airy Ai' Function"><span class="index-entry-level-1">Airy Ai' Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_bi</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/bi.html" title="Airy Bi Function"><span class="index-entry-level-1">Airy Bi Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">airy_bi_prime</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/airy/bip.html" title="Airy Bi' Function"><span class="index-entry-level-1">Airy Bi' Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">asinh</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/inv_hyper/asinh.html" title="asinh"><span class="index-entry-level-1">asinh</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">asinhf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">asinhl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assert_undefined_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_laguerre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_laguerref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_laguerrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_legendre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_legendref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">assoc_legendrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">atanh</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/inv_hyper/atanh.html" title="atanh"><span class="index-entry-level-1">atanh</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">atanhf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">atanhl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_97"></a><span class="term">B</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">bernoulli</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">Bernoulli Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Bernoulli Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">bernoulli</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">bernoulli_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">skewness</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-0">bernoulli_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Bessel Functions of the First and Second Kinds</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">cyl_bessel_j</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">cyl_neumann</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Beta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/sf_beta/beta_function.html" title="Beta"><span class="index-entry-level-1">beta</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/beta_function.html" title="Beta"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">beta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/sf_beta/beta_function.html" title="Beta"><span class="index-entry-level-1">Beta</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_binomial.html" title="Binomial Coefficients"><span class="index-entry-level-1">Binomial Coefficients</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_beta_a_b_" title="Table 3.10. Errors In the Function beta(a, b, x)"><span class="index-entry-level-1">Errors In the Function beta(a, b, x)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">Incomplete Beta Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Beta Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">beta_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">find_beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">ibeta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">ibetac</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">ibetac_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">ibeta_derivative</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">ibeta_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">ibeta_inva</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">ibeta_invb</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">variance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">betac</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_betac_a_b" title="Table 3.11. Errors In the Function betac(a,b,x)"><span class="index-entry-level-1">Errors In the Function betac(a,b,x)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">Incomplete Beta Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">betaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">betal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-0">beta_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">binomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Binomial Coefficients</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_binomial.html" title="Binomial Coefficients"><span class="index-entry-level-1">beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_binomial.html" title="Binomial Coefficients"><span class="index-entry-level-1">binomial_coefficient</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Binomial Coin-Flipping Example</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html" title="Binomial Coin-Flipping Example"><span class="index-entry-level-1">cdf</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Binomial Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">binomial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">binomial_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">find_lower_bound_on_p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">find_upper_bound_on_p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">ibeta_derivative</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Binomial Quiz Example</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html" title="Binomial Quiz Example"><span class="index-entry-level-1">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html" title="Binomial Quiz Example"><span class="index-entry-level-1">constants</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">binomial_coefficient</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_binomial.html" title="Binomial Coefficients"><span class="index-entry-level-1">Binomial Coefficients</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-0">binomial_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Boost.Math Macros</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_FPU_EXCEPTION_GUARD</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_CONTROL_FP</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_EXPLICIT_TEMPLATE_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_INSTRUMENT_CODE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_INSTRUMENT_FPU</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_INSTRUMENT_VARIABLE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_NO_REAL_CONCEPT_TESTS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_SMALL_CONSTANT</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_STD_USING</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">BOOST_MATH_USE_C99</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">constants</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Boost.Math Tuning</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">BOOST_MATH_INT_TABLE_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">BOOST_MATH_INT_VALUE_SUFFIX</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">BOOST_MATH_MAX_POLY_ORDER</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">BOOST_MATH_POLY_METHOD</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">BOOST_MATH_RATIONAL_METHOD</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">constants</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_CONSTANTS_GENERATE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_DEFINE_MATH_CONSTANT</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_faq.html" title="FAQs"><span class="index-entry-level-1">FAQs</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_FPU_EXCEPTION_GUARD</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_HAS_LOG1P</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/log1p.html" title="log1p"><span class="index-entry-level-1">log1p</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_ASSERT_UNDEFINED_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/changing_policy_defaults.html" title="Changing the Policy Defaults"><span class="index-entry-level-1">Changing the Policy Defaults</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/assert_undefined.html" title="Mathematically Undefined Function Policies"><span class="index-entry-level-1">Mathematically Undefined Function Policies</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_CONTROL_FP</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DECLARE_DISTRIBUTIONS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DENORM_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DIGITS10_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html" title="Binomial Quiz Example"><span class="index-entry-level-1">Binomial Quiz Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">Geometric Distribution Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">Negative Binomial Sales Quota Example.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_DOMAIN_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/error_eg.html" title="Error Handling Example"><span class="index-entry-level-1">Error Handling Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_EVALUATION_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_EXPLICIT_TEMPLATE_TYPE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INSTRUMENT_CODE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INSTRUMENT_FPU</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INSTRUMENT_VARIABLE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INT_TABLE_TYPE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_INT_VALUE_SUFFIX</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_MAX_POLY_ORDER</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_MAX_ROOT_ITERATION_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/iteration_pol.html" title="Iteration Limits Policies"><span class="index-entry-level-1">Iteration Limits Policies</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_MAX_SERIES_ITERATION_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/iteration_pol.html" title="Iteration Limits Policies"><span class="index-entry-level-1">Iteration Limits Policies</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compilers_overview.html#math_toolkit.compilers_overview.supported_tested_compilers" title="Table 1.9. Supported/Tested Compilers"><span class="index-entry-level-1">Supported/Tested Compilers</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_NO_REAL_CONCEPT_TESTS</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_OVERFLOW_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/changing_policy_defaults.html" title="Changing the Policy Defaults"><span class="index-entry-level-1">Changing the Policy Defaults</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">Compile Time Power of a Runtime Base</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/error_eg.html" title="Error Handling Example"><span class="index-entry-level-1">Error Handling Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">Geometric Distribution Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">Negative Binomial Sales Quota Example.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_POLE_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_POLY_METHOD</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_PROMOTE_DOUBLE_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_PROMOTE_FLOAT_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_RATIONAL_METHOD</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_ROUNDING_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_SMALL_CONSTANT</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_STD_USING</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_UNDERFLOW_ERROR_POLICY</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">Using Macros to Change the Policy Defaults</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_MATH_USE_C99</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">brent_find_minima</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/minima.html" title="Locating Function Minima: Brent's algorithm"><span class="index-entry-level-1">Locating Function Minima: Brent's algorithm</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_98"></a><span class="term">C</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">c</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">C99 and C++ TR1 C-style Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">acosh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">acoshf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">acoshl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">asinh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">asinhf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">asinhl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">assoc_laguerre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">assoc_laguerref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">assoc_laguerrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">assoc_legendre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">assoc_legendref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">assoc_legendrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">atanh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">atanhf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">atanhl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">betaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">betal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cbrt</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cbrtf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cbrtl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">comp_ellint_1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">comp_ellint_1f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">comp_ellint_1l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">comp_ellint_2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">comp_ellint_2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">comp_ellint_2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">comp_ellint_3</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">comp_ellint_3f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">comp_ellint_3l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">conf_hyperg</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">conf_hypergf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">conf_hypergl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">copysign</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">copysignf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">copysignl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_bessel_i</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_bessel_if</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_bessel_il</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_bessel_j</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_bessel_jf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_bessel_jl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_bessel_k</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_bessel_kf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_bessel_kl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_neumann</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_neumannf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">cyl_neumannl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">double_t</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ellint_1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ellint_1f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ellint_1l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ellint_2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ellint_2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ellint_2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ellint_3</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ellint_3f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ellint_3l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">erf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">erfc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">erfcf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">erfcl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">erff</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">erfl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">exp2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">exp2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">exp2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">expint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">expintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">expintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">expm1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">expm1f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">expm1l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fdim</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fdimf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fdiml</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">float_t</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fmaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fmal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fmax</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fmaxf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fmaxl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fmin</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fminf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">fminl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">hermite</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">hermitef</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">hermitel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">hyperg</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">hypergf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">hypergl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">hypot</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">hypotf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">hypotl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ilogb</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ilogbf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">ilogbl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">laguerre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">laguerref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">laguerrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">legendre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">legendref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">legendrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">lgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">lgammaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">lgammal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">llrint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">llrintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">llrintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">llround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">llroundf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">llroundl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">log1p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">log1pf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">log1pl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">log2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">log2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">log2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">logb</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">logbf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">logbl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">lrint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">lrintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">lrintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">lround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">lroundf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">lroundl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nan</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nanf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nanl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nearbyint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nearbyintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nearbyintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nextafter</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nextafterf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nextafterl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nexttoward</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nexttowardf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">nexttowardl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">remainder</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">remainderf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">remainderl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">remquo</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">remquof</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">remquol</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">riemann_zeta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">riemann_zetaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">riemann_zetal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">rint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">rintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">rintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">round</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">roundf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">roundl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">scalbln</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">scalblnf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">scalblnl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">scalbn</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">scalbnf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">scalbnl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">sph_bessel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">sph_besself</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">sph_bessell</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">sph_legendre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">sph_legendref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">sph_legendrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">sph_neumann</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">sph_neumannf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">sph_neumannl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">tgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">tgammaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">tgammal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">trunc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">truncf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">truncl</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">C99 and TR1 C Functions Overview</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">acosh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">acoshf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">acoshl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">asinh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">asinhf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">asinhl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">assoc_laguerre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">assoc_laguerref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">assoc_laguerrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">assoc_legendre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">assoc_legendref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">assoc_legendrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">atanh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">atanhf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">atanhl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">betaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">betal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cbrt</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cbrtf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cbrtl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">comp_ellint_1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">comp_ellint_1f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">comp_ellint_1l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">comp_ellint_2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">comp_ellint_2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">comp_ellint_2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">comp_ellint_3</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">comp_ellint_3f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">comp_ellint_3l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">conf_hyperg</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">conf_hypergf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">conf_hypergl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">copysign</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">copysignf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">copysignl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_bessel_i</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_bessel_if</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_bessel_il</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_bessel_j</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_bessel_jf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_bessel_jl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_bessel_k</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_bessel_kf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_bessel_kl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_neumann</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_neumannf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">cyl_neumannl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">double_t</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ellint_1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ellint_1f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ellint_1l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ellint_2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ellint_2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ellint_2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ellint_3</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ellint_3f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ellint_3l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">erf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">erfc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">erfcf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">erfcl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">erff</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">erfl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">exp2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">exp2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">exp2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">expint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">expintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">expintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">expm1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">expm1f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">expm1l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fdim</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fdimf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fdiml</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">float_t</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fmaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fmal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fmax</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fmaxf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fmaxl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fmin</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fminf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">fminl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">hermite</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">hermitef</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">hermitel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">hyperg</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">hypergf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">hypergl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">hypot</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">hypotf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">hypotl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ilogb</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ilogbf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">ilogbl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">laguerre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">laguerref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">laguerrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">legendre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">legendref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">legendrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">lgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">lgammaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">lgammal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">llrint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">llrintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">llrintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">llround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">llroundf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">llroundl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">log1p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">log1pf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">log1pl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">log2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">log2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">log2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">logb</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">logbf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">logbl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">lrint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">lrintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">lrintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">lround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">lroundf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">lroundl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nan</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nanf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nanl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nearbyint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nearbyintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nearbyintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nextafter</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nextafterf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nextafterl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nexttoward</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nexttowardf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">nexttowardl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">remainder</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">remainderf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">remainderl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">remquo</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">remquof</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">remquol</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">riemann_zeta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">riemann_zetaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">riemann_zetal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">rint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">rintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">rintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">round</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">roundf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">roundl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">scalbln</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">scalblnf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">scalblnl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">scalbn</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">scalbnf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">scalbnl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">sph_bessel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">sph_besself</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">sph_bessell</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">sph_legendre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">sph_legendref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">sph_legendrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">sph_neumann</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">sph_neumannf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">sph_neumannl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">tgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">tgammaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">tgammal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">trunc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">truncf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">truncl</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">C99 C Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">acosh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">acoshf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">acoshl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">asinh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">asinhf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">asinhl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">atanh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">atanhf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">atanhl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">cbrt</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">cbrtf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">cbrtl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">copysign</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">copysignf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">copysignl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">double_t</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">erf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">erfc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">erfcf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">erfcl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">erff</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">erfl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">expm1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">expm1f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">expm1l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">float_t</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">fmax</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">fmaxf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">fmaxl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">fmin</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">fminf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">fminl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">hypot</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">hypotf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">hypotl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">lgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">lgammaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">lgammal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">llround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">llroundf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">llroundl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">log1p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">log1pf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">log1pl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">lround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">lroundf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">lroundl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">nextafter</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">nextafterf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">nextafterl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">nexttoward</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">nexttowardf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">nexttowardl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">round</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">roundf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">roundl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">tgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">tgammaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">tgammal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">trunc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">truncf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">truncl</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Calling User Defined Error Handlers</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">erf_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">msg</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">promote_args</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">tgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">user_denorm_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">user_domain_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">user_evaluation_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">user_indeterminate_result_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">user_overflow_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">user_pole_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">user_rounding_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">user_underflow_error</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cauchy</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">Find Location (Mean) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html" title="Find mean and standard deviation example"><span class="index-entry-level-1">Find mean and standard deviation example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Cauchy-Lorentz Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">cauchy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">cauchy_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">shape</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cauchy_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cbrt</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/powers/cbrt.html" title="cbrt"><span class="index-entry-level-1">cbrt</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cbrtf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cbrtl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cdf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html" title="Binomial Coin-Flipping Example"><span class="index-entry-level-1">Binomial Coin-Flipping Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies"><span class="index-entry-level-1">Discrete Quantile Policies</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/future.html" title="Extras/Future Directions"><span class="index-entry-level-1">Extras/Future Directions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/generic.html" title="Generic operations common to all distributions are non-member functions"><span class="index-entry-level-1">Generic operations common to all distributions are non-member functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">changesign</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">Sign Manipulation Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Changing the Policy Defaults</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/changing_policy_defaults.html" title="Changing the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_ASSERT_UNDEFINED_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/changing_policy_defaults.html" title="Changing the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_OVERFLOW_ERROR_POLICY</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Changing the Policy on an Ad Hoc Basis for the Special Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/ad_hoc_sf_policies.html" title="Changing the Policy on an Ad Hoc Basis for the Special Functions"><span class="index-entry-level-1">tgamma</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">checked_narrowing_cast</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/error_handling.html" title="Error Handling"><span class="index-entry-level-1">Error Handling</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">chf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Chi Squared Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">chi_squared</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">chi_squared_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">find_degrees_of_freedom</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">gamma_p_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">gamma_q_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">value</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">chi_squared</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-0">chi_squared_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Compile time GCD and LCM determination</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compile_time.html" title="Compile time GCD and LCM determination"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compile_time.html" title="Compile time GCD and LCM determination"><span class="index-entry-level-1">expression</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Compile Time Power of a Runtime Base</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">BOOST_MATH_OVERFLOW_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">log2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">user_overflow_error</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Compilers</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compilers_overview.html" title="Compilers"><span class="index-entry-level-1">range</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Complements are supported too - and when to use them</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/complements.html" title="Complements are supported too - and when to use them"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/complements.html" title="Complements are supported too - and when to use them"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/complements.html" title="Complements are supported too - and when to use them"><span class="index-entry-level-1">quantile</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_1f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_1l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_2</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_2f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_2l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_3</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_3f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">comp_ellint_3l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Conceptual Requirements for Distribution Types</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_concept.html" title="Conceptual Requirements for Distribution Types"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_concept.html" title="Conceptual Requirements for Distribution Types"><span class="index-entry-level-1">quantile</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Conceptual Requirements for Real Number Types</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">iround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">itrunc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">ldexp</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">round</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">trunc</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">confidence intervals on the mean with the Students-t distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html" title="Calculating confidence intervals on the mean with the Students-t distribution"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html" title="Calculating confidence intervals on the mean with the Students-t distribution"><span class="index-entry-level-1">t</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conf_hyperg</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conf_hypergf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conf_hypergl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conj</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">constants</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html" title="Binomial Quiz Example"><span class="index-entry-level-1">Binomial Quiz Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" title="Table 1.11. Boost.Math Macros"><span class="index-entry-level-1">Boost.Math Macros</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_tuning" title="Table 1.12. Boost.Math Tuning"><span class="index-entry-level-1">Boost.Math Tuning</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compile_time.html" title="Compile time GCD and LCM determination"><span class="index-entry-level-1">Compile time GCD and LCM determination</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/complements.html" title="Complements are supported too - and when to use them"><span class="index-entry-level-1">Complements are supported too - and when to use them</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/credits.html" title="Credits and Acknowledgements"><span class="index-entry-level-1">Credits and Acknowledgements</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/digamma.html" title="Digamma"><span class="index-entry-level-1">Digamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/directories.html" title="Directory and File Structure"><span class="index-entry-level-1">Directory and File Structure</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_inv.html" title="Error Function Inverses"><span class="index-entry-level-1">Error Function Inverses</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html" title="Error Functions"><span class="index-entry-level-1">Error Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">Exponential Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html" title="Exponential Integral Ei"><span class="index-entry-level-1">Exponential Integral Ei</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">Extreme Value Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-1">Factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_faq.html" title="FAQs"><span class="index-entry-level-1">FAQs</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">History and What's New</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Hypergeometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_intro.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">Log Gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../constants.html" title="Chapter 6. Mathematical Constants"><span class="index-entry-level-1">Mathematical Constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/minimax.html" title="Minimax Approximations and the Remez Algorithm"><span class="index-entry-level-1">Minimax Approximations and the Remez Algorithm</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">Rayleigh Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/zetas/zeta.html" title="Riemann Zeta Function"><span class="index-entry-level-1">Riemann Zeta Function</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lanczos.html" title="The Lanczos Approximation"><span class="index-entry-level-1">The Lanczos Approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants.html" title="The Mathematical Constants"><span class="index-entry-level-1">The Mathematical Constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/remez.html" title="The Remez Method"><span class="index-entry-level-1">The Remez Method</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">Uniform Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/non_templ.html" title="Use in non-template code"><span class="index-entry-level-1">Use in non-template code</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/templ.html" title="Use in template code"><span class="index-entry-level-1">Use in template code</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/user_def.html" title="Use With User-Defined Types"><span class="index-entry-level-1">Use With User-Defined Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries"><span class="index-entry-level-1">Using Boost.Math with High-Precision Floating-Point Libraries</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/use_multiprecision.html" title="Using Boost.Multiprecision"><span class="index-entry-level-1">Using Boost.Multiprecision</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/float128.html" title="Using with GCC's __float128 datatype"><span class="index-entry-level-1">Using with GCC's __float128 datatype</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">construction_traits</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/user_def.html" title="Use With User-Defined Types"><span class="index-entry-level-1">Use With User-Defined Types</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Continued Fraction Evaluation</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/cf.html" title="Continued Fraction Evaluation"><span class="index-entry-level-1">continued_fraction_a</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/cf.html" title="Continued Fraction Evaluation"><span class="index-entry-level-1">continued_fraction_b</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/cf.html" title="Continued Fraction Evaluation"><span class="index-entry-level-1">expression</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">continued_fraction_a</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/cf.html" title="Continued Fraction Evaluation"><span class="index-entry-level-1">Continued Fraction Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">continued_fraction_b</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/cf.html" title="Continued Fraction Evaluation"><span class="index-entry-level-1">Continued Fraction Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conventions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/conventions.html" title="Document Conventions"><span class="index-entry-level-1">Document Conventions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">copysign</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">Sign Manipulation Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">copysignf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">copysignl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/cos_pi.html" title="cos_pi"><span class="index-entry-level-0">cos_pi</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Credits and Acknowledgements</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/credits.html" title="Credits and Acknowledgements"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/credits.html" title="Credits and Acknowledgements"><span class="index-entry-level-1">expression</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cylindrical</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_create.html" title="Octonion Creation Functions"><span class="index-entry-level-1">Octonion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cylindrospherical</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_i</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Modified Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_if</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_il</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_j</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">Known Issues, and TODO List</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_jf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_jl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_j_zero</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Finding Zeros of Bessel Functions of the First and Second Kinds</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_k</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Modified Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_kf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_bessel_kl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_neumann</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">Known Issues, and TODO List</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_neumannf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_neumannl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">cyl_neumann_zero</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Finding Zeros of Bessel Functions of the First and Second Kinds</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_99"></a><span class="term">D</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">default_policy</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Defining New Constants</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">BOOST_CONSTANTS_GENERATE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">BOOST_DEFINE_MATH_CONSTANT</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">BOOST_MATH_STD_USING</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">get</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">get_from_string</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">denorm_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Derivative of the Incomplete Beta Function</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function"><span class="index-entry-level-1">ibeta_derivative</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Derivative of the Incomplete Gamma Function</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function"><span class="index-entry-level-1">gamma_p_derivative</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Digamma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/digamma.html" title="Digamma"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/sf_gamma/digamma.html" title="Digamma"><span class="index-entry-level-1">digamma</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/digamma.html" title="Digamma"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/digamma.html" title="Digamma"><span class="index-entry-level-0">digamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Directory and File Structure</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/directories.html" title="Directory and File Structure"><span class="index-entry-level-1">constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Discrete Quantile Policies</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies"><span class="index-entry-level-1">cdf</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">discrete_quantile_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Distribution Algorithms</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dist_algorithms.html" title="Distribution Algorithms"><span class="index-entry-level-1">find_location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dist_algorithms.html" title="Distribution Algorithms"><span class="index-entry-level-1">find_scale</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Distribution Construction Examples</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/dist_construct_eg.html" title="Distribution Construction Examples"><span class="index-entry-level-1">mean</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/dist_construct_eg.html" title="Distribution Construction Examples"><span class="index-entry-level-1">negative_binomial</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">domain_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_double_factorial.html" title="Double Factorial"><span class="index-entry-level-0">Double Factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_double_factorial.html" title="Double Factorial"><span class="index-entry-level-0">double_factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">double_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_100"></a><span class="term">E</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_1.html" title="Elliptic Integrals of the First Kind - Legendre Form"><span class="index-entry-level-1">Elliptic Integrals of the First Kind - Legendre Form</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_1f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_1l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_2</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_2.html" title="Elliptic Integrals of the Second Kind - Legendre Form"><span class="index-entry-level-1">Elliptic Integrals of the Second Kind - Legendre Form</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_2f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_2l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_3</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_3.html" title="Elliptic Integrals of the Third Kind - Legendre Form"><span class="index-entry-level-1">Elliptic Integrals of the Third Kind - Legendre Form</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_3f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_3l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_rc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">Elliptic Integrals - Carlson Form</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_rd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">Elliptic Integrals - Carlson Form</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_rf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">Elliptic Integrals - Carlson Form</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ellint_rj</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">Elliptic Integrals - Carlson Form</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Elliptic Integral Overview</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_intro.html" title="Elliptic Integral Overview"><span class="index-entry-level-1">expression</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Elliptic Integrals - Carlson Form</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">ellint_rc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">ellint_rd</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">ellint_rf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_carlson.html" title="Elliptic Integrals - Carlson Form"><span class="index-entry-level-1">ellint_rj</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Elliptic Integrals of the First Kind - Legendre Form</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_1.html" title="Elliptic Integrals of the First Kind - Legendre Form"><span class="index-entry-level-1">ellint_1</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Elliptic Integrals of the Second Kind - Legendre Form</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_2.html" title="Elliptic Integrals of the Second Kind - Legendre Form"><span class="index-entry-level-1">ellint_2</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Elliptic Integrals of the Third Kind - Legendre Form</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_3.html" title="Elliptic Integrals of the Third Kind - Legendre Form"><span class="index-entry-level-1">ellint_3</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">epsilon</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/minima.html" title="Locating Function Minima: Brent's algorithm"><span class="index-entry-level-1">Locating Function Minima: Brent's algorithm</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">eps_tolerance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">equal_ceil</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">equal_floor</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">equal_nearest_integer</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html" title="Error Functions"><span class="index-entry-level-1">Error Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html#math_toolkit.sf_erf.error_function.errors_in_the_function_erf_z" title="Table 3.12. Errors In the Function erf(z)"><span class="index-entry-level-1">Errors In the Function erf(z)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html" title="Error Functions"><span class="index-entry-level-1">Error Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html#math_toolkit.sf_erf.error_function.errors_in_the_function_erfc_z" title="Table 3.13. Errors In the Function erfc(z)"><span class="index-entry-level-1">Errors In the Function erfc(z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfcf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfcl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfc_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_inv.html" title="Error Function Inverses"><span class="index-entry-level-1">Error Function Inverses</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erff</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erfl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">erf_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_inv.html" title="Error Function Inverses"><span class="index-entry-level-1">Error Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Error Function Inverses</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_inv.html" title="Error Function Inverses"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_inv.html" title="Error Function Inverses"><span class="index-entry-level-1">erfc_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_inv.html" title="Error Function Inverses"><span class="index-entry-level-1">erf_inv</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Error Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html" title="Error Functions"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html" title="Error Functions"><span class="index-entry-level-1">erf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html" title="Error Functions"><span class="index-entry-level-1">erfc</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Error Handling</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/error_handling.html" title="Error Handling"><span class="index-entry-level-1">checked_narrowing_cast</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Error Handling Example</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/error_eg.html" title="Error Handling Example"><span class="index-entry-level-1">BOOST_MATH_DOMAIN_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/error_eg.html" title="Error Handling Example"><span class="index-entry-level-1">BOOST_MATH_OVERFLOW_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/error_eg.html" title="Error Handling Example"><span class="index-entry-level-1">infinity</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Error Handling Policies</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">user_denorm_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">user_domain_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">user_evaluation_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">user_indeterminate_result_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">user_overflow_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">user_pole_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">user_rounding_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">user_underflow_error</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function beta(a, b, x)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_beta_a_b_" title="Table 3.10. Errors In the Function beta(a, b, x)"><span class="index-entry-level-1">beta</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function betac(a,b,x)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_betac_a_b" title="Table 3.11. Errors In the Function betac(a,b,x)"><span class="index-entry-level-1">betac</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function erf(z)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html#math_toolkit.sf_erf.error_function.errors_in_the_function_erf_z" title="Table 3.12. Errors In the Function erf(z)"><span class="index-entry-level-1">erf</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function erfc(z)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_erf/error_function.html#math_toolkit.sf_erf.error_function.errors_in_the_function_erfc_z" title="Table 3.13. Errors In the Function erfc(z)"><span class="index-entry-level-1">erfc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function expint(n, z)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_n.html#math_toolkit.expint.expint_n.errors_in_the_function_expint_n_" title="Table 3.31. Errors In the Function expint(n, z)"><span class="index-entry-level-1">expint</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function expint(z)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html#math_toolkit.expint.expint_i.errors_in_the_function_expint_z" title="Table 3.32. Errors In the Function expint(z)"><span class="index-entry-level-1">expint</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function gamma_p(a,z)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_gamma_p_a" title="Table 3.3. Errors In the Function gamma_p(a,z)"><span class="index-entry-level-1">gamma_p</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function gamma_q(a,z)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_gamma_q_a" title="Table 3.4. Errors In the Function gamma_q(a,z)"><span class="index-entry-level-1">gamma_q</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function ibeta(a,b,x)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_ibeta_a_b" title="Table 3.8. Errors In the Function ibeta(a,b,x)"><span class="index-entry-level-1">ibeta</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function ibetac(a,b,x)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_ibetac_a_" title="Table 3.9. Errors In the Function ibetac(a,b,x)"><span class="index-entry-level-1">ibetac</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function tgamma(a,z)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_tgamma_a_" title="Table 3.6. Errors In the Function tgamma(a,z)"><span class="index-entry-level-1">tgamma</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function tgamma_delta_ratio(a, delta)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.errors_in_the_function_tgamma_de" title="Table 3.1. Errors In the Function tgamma_delta_ratio(a, delta)"><span class="index-entry-level-1">tgamma_delta_ratio</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function tgamma_lower(a,z)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_tgamma_lo" title="Table 3.5. Errors In the Function tgamma_lower(a,z)"><span class="index-entry-level-1">tgamma_lower</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function tgamma_ratio(a, b)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.errors_in_the_function_tgamma_ra" title="Table 3.2. Errors In the Function tgamma_ratio(a, b)"><span class="index-entry-level-1">tgamma_ratio</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Errors In the Function zeta(z)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/zetas/zeta.html#math_toolkit.zetas.zeta.errors_in_the_function_zeta_z" title="Table 3.30. Errors In the Function zeta(z)"><span class="index-entry-level-1">zeta</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html" title="Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation"><span class="index-entry-level-1">variance</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluate_even_polynomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluate_odd_polynomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluate_polynomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluate_rational</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">evaluation_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">exp2</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">exp2f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">exp2l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_n.html#math_toolkit.expint.expint_n.errors_in_the_function_expint_n_" title="Table 3.31. Errors In the Function expint(n, z)"><span class="index-entry-level-1">Errors In the Function expint(n, z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html#math_toolkit.expint.expint_i.errors_in_the_function_expint_z" title="Table 3.32. Errors In the Function expint(z)"><span class="index-entry-level-1">Errors In the Function expint(z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html" title="Exponential Integral Ei"><span class="index-entry-level-1">Exponential Integral Ei</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_n.html" title="Exponential Integral En"><span class="index-entry-level-1">Exponential Integral En</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expm1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/powers/expm1.html" title="expm1"><span class="index-entry-level-1">expm1</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expm1f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expm1l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">exponential</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">Exponential Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Exponential Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">exponential</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">exponential_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Exponential Integral Ei</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html" title="Exponential Integral Ei"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html" title="Exponential Integral Ei"><span class="index-entry-level-1">expint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html" title="Exponential Integral Ei"><span class="index-entry-level-1">zeta</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Exponential Integral En</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_n.html" title="Exponential Integral En"><span class="index-entry-level-1">expint</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-0">exponential_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">expression</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html" title="Calculating confidence intervals on the mean with the Students-t distribution"><span class="index-entry-level-1">Calculating confidence intervals on the mean with the Students-t distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compile_time.html" title="Compile time GCD and LCM determination"><span class="index-entry-level-1">Compile time GCD and LCM determination</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">Compile Time Power of a Runtime Base</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/complements.html" title="Complements are supported too - and when to use them"><span class="index-entry-level-1">Complements are supported too - and when to use them</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_concept.html" title="Conceptual Requirements for Distribution Types"><span class="index-entry-level-1">Conceptual Requirements for Distribution Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/cf.html" title="Continued Fraction Evaluation"><span class="index-entry-level-1">Continued Fraction Evaluation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/credits.html" title="Credits and Acknowledgements"><span class="index-entry-level-1">Credits and Acknowledgements</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/ellint/ellint_intro.html" title="Elliptic Integral Overview"><span class="index-entry-level-1">Elliptic Integral Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">F Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-1">Factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_faq.html" title="FAQs"><span class="index-entry-level-1">FAQs</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">Find Scale (Standard Deviation) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Finding Zeros of Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">Geometric Distribution Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">History and What's New</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Hypergeometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_intro.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example"><span class="index-entry-level-1">Inverse Chi-Squared Distribution Bayes Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN"><span class="index-entry-level-1">Jacobi Elliptic SN, CN and DN</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/assert_undefined.html" title="Mathematically Undefined Function Policies"><span class="index-entry-level-1">Mathematically Undefined Function Policies</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">Negative Binomial Sales Quota Example.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jac_over.html" title="Overvew of the Jacobi Elliptic Functions"><span class="index-entry-level-1">Overvew of the Jacobi Elliptic Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">Poisson Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">Series Evaluation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lanczos.html" title="The Lanczos Approximation"><span class="index-entry-level-1">The Lanczos Approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/remez.html" title="The Remez Method"><span class="index-entry-level-1">The Remez Method</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_todo.html" title="To Do"><span class="index-entry-level-1">To Do</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/templ.html" title="Use in template code"><span class="index-entry-level-1">Use in template code</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/use_mpfr.html" title="Using With MPFR or GMP - High-Precision Floating-Point Library"><span class="index-entry-level-1">Using With MPFR or GMP - High-Precision Floating-Point Library</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/using_test.html" title="Using without expression templates for Boost.Test and others"><span class="index-entry-level-1">Using without expression templates for Boost.Test and others</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Extras/Future Directions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/future.html" title="Extras/Future Directions"><span class="index-entry-level-1">cdf</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Extreme Value Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">extreme_value</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">extreme_value_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">extreme_value</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">Extreme Value Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-0">extreme_value_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">e_float</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/e_float.html" title="Using e_float Library"><span class="index-entry-level-1">Using e_float Library</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_101"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">F Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">fisher_f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">fisher_f_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">ibeta_derivative</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Facets for Floating-Point Infinities and NaNs</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets.html" title="Facets for Floating-Point Infinities and NaNs"><span class="index-entry-level-1">nonfinite_num_get</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets.html" title="Facets for Floating-Point Infinities and NaNs"><span class="index-entry-level-1">nonfinite_num_put</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Factorial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-1">factorial</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-1">max_factorial</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-0">factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_falling_factorial.html" title="Falling Factorial"><span class="index-entry-level-0">Falling Factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_falling_factorial.html" title="Falling Factorial"><span class="index-entry-level-0">falling_factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FAQs</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_faq.html" title="FAQs"><span class="index-entry-level-1">BOOST_DEFINE_MATH_CONSTANT</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_faq.html" title="FAQs"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_faq.html" title="FAQs"><span class="index-entry-level-1">expression</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fdim</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fdimf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fdiml</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Find Location (Mean) Example</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">cauchy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">mean</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">standard_deviation</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Find mean and standard deviation example</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html" title="Find mean and standard deviation example"><span class="index-entry-level-1">cauchy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html" title="Find mean and standard deviation example"><span class="index-entry-level-1">scale</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Find Scale (Standard Deviation) Example</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">mean</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">standard_deviation</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Finding the Next Greater Representable Value (float_next)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_next.html" title="Finding the Next Greater Representable Value (float_next)"><span class="index-entry-level-1">float_next</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Finding the Next Representable Value in a Specific Direction (nextafter)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/nextafter.html" title="Finding the Next Representable Value in a Specific Direction (nextafter)"><span class="index-entry-level-1">nextafter</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Finding the Next Smaller Representable Value (float_prior)</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_prior.html" title="Finding the Next Smaller Representable Value (float_prior)"><span class="index-entry-level-1">float_prior</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Finding Zeros of Bessel Functions of the First and Second Kinds</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">cyl_bessel_j_zero</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">cyl_neumann_zero</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">expression</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_beta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_degrees_of_freedom</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_location</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dist_algorithms.html" title="Distribution Algorithms"><span class="index-entry-level-1">Distribution Algorithms</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_lower_bound_on_p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_non_centrality</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_scale</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dist_algorithms.html" title="Distribution Algorithms"><span class="index-entry-level-1">Distribution Algorithms</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_upper_bound_on_p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fisher_f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">F Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/ad_hoc_dist_policies.html" title="Setting Policies for Distributions on an Ad Hoc Basis"><span class="index-entry-level-1">Setting Policies for Distributions on an Ad Hoc Basis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fisher_f_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">F Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Floating-Point Classification: Infinities and NaNs</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">fpclassify</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">FP_INFINITE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">FP_NAN</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">FP_NORMAL</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">FP_SUBNORMAL</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">FP_ZERO</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">isfinite</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">isinf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">isnan</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">isnormal</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_advance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_advance.html" title="Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance"><span class="index-entry-level-1">Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_distance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_advance.html" title="Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance"><span class="index-entry-level-1">Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_distance.html" title="Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance"><span class="index-entry-level-1">Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_next</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_next.html" title="Finding the Next Greater Representable Value (float_next)"><span class="index-entry-level-1">Finding the Next Greater Representable Value (float_next)</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_prior</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_prior.html" title="Finding the Next Smaller Representable Value (float_prior)"><span class="index-entry-level-1">Finding the Next Smaller Representable Value (float_prior)</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmax</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmaxf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmaxl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fmin</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fminf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fminl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fpclassify</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_INFINITE</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_NAN</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_NORMAL</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_SUBNORMAL</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">FP_ZERO</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_102"></a><span class="term">G</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Gamma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/tgamma.html" title="Gamma"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/tgamma.html" title="Gamma"><span class="index-entry-level-1">tgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/tgamma.html" title="Gamma"><span class="index-entry-level-1">tgamma1pm1</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Gamma (and Erlang) Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">gamma_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">gamma_p_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">gamma_q_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">mode</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">shape</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_gamma_p_a" title="Table 3.3. Errors In the Function gamma_p(a,z)"><span class="index-entry-level-1">Errors In the Function gamma_p(a,z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Incomplete Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_p_derivative</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function"><span class="index-entry-level-1">Derivative of the Incomplete Gamma Function</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_p_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_p_inva</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_q</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_gamma_q_a" title="Table 3.4. Errors In the Function gamma_q(a,z)"><span class="index-entry-level-1">Errors In the Function gamma_q(a,z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Incomplete Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_q_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gamma_q_inva</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">Incomplete Gamma Function Inverses</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gcd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">GCD Function Object</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/gcd_function_object.html" title="GCD Function Object"><span class="index-entry-level-1">gcd_evaluator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/gcd_function_object.html" title="GCD Function Object"><span class="index-entry-level-1">second_argument_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">gcd_evaluator</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/gcd_function_object.html" title="GCD Function Object"><span class="index-entry-level-1">GCD Function Object</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Generic operations common to all distributions are non-member functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/generic.html" title="Generic operations common to all distributions are non-member functions"><span class="index-entry-level-1">cdf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/generic.html" title="Generic operations common to all distributions are non-member functions"><span class="index-entry-level-1">pdf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/generic.html" title="Generic operations common to all distributions are non-member functions"><span class="index-entry-level-1">value</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">geometric</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Geometric Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">find_lower_bound_on_p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">find_upper_bound_on_p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">geometric</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">geometric_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">mean</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">skewness</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">variance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Geometric Distribution Examples</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">BOOST_MATH_OVERFLOW_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">normal</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-0">geometric_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">get</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/user_def.html" title="Use With User-Defined Types"><span class="index-entry-level-1">Use With User-Defined Types</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">get_from_string</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/new_const.html" title="Defining New Constants"><span class="index-entry-level-1">Defining New Constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">get_user_parameter_info</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Graphing, Profiling, and Generating Test Data for Special Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">get_user_parameter_info</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">insert</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">make_periodic_param</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">make_power_param</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">make_random_param</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">test_data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">upper_incomplete_gamma_fract</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">value_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">write_code</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">write_csv</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_103"></a><span class="term">H</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">halley_iterate</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hazard</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hermite</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/hermite.html" title="Hermite Polynomials"><span class="index-entry-level-1">Hermite Polynomials</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Hermite Polynomials</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/hermite.html" title="Hermite Polynomials"><span class="index-entry-level-1">hermite</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/hermite.html" title="Hermite Polynomials"><span class="index-entry-level-1">hermite_next</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hermitef</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hermitel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hermite_next</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/hermite.html" title="Hermite Polynomials"><span class="index-entry-level-1">Hermite Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">History and What's New</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">mode</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">nextafter</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">value</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hyperg</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypergeometric</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Hypergeometric Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Hypergeometric Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">hypergeometric</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">hypergeometric_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-0">hypergeometric_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypergf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypergl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypot</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/powers/hypot.html" title="hypot"><span class="index-entry-level-1">hypot</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypotf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">hypotl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_104"></a><span class="term">I</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_ibeta_a_b" title="Table 3.8. Errors In the Function ibeta(a,b,x)"><span class="index-entry-level-1">Errors In the Function ibeta(a,b,x)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">Incomplete Beta Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibetac</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html#math_toolkit.sf_beta.ibeta_function.errors_in_the_function_ibetac_a_" title="Table 3.9. Errors In the Function ibetac(a,b,x)"><span class="index-entry-level-1">Errors In the Function ibetac(a,b,x)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">Incomplete Beta Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibetac_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibetac_inva</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibetac_invb</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta_derivative</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function"><span class="index-entry-level-1">Derivative of the Incomplete Beta Function</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">F Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta_inv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta_inva</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ibeta_invb</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">The Incomplete Beta Function Inverses</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ilogb</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ilogbf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ilogbl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Implementation Notes</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">BOOST_DEFINE_MATH_CONSTANT</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">BOOST_MATH_DOMAIN_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">cdf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">infinity</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">median</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">triangular_distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Incomplete Beta Function Inverses</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">ibetac_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">ibetac_inva</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">ibetac_invb</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">ibeta_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">ibeta_inva</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses"><span class="index-entry-level-1">ibeta_invb</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Incomplete Beta Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">betac</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">ibeta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/ibeta_function.html" title="Incomplete Beta Functions"><span class="index-entry-level-1">ibetac</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Incomplete Gamma Function Inverses</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">gamma_p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">gamma_p_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">gamma_p_inva</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">gamma_q_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses"><span class="index-entry-level-1">gamma_q_inva</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Incomplete Gamma Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">gamma_p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">gamma_q</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">tgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">tgamma_lower</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">indeterminate_result_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">infinity</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/error_eg.html" title="Error Handling Example"><span class="index-entry-level-1">Error Handling Example</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">insert</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Introduction</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_intro.html" title="Introduction"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/constants_intro.html" title="Introduction"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets/facets_intro.html" title="Introduction"><span class="index-entry-level-1">nan</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Inverse Chi Squared Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">inverse_chi_squared</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">inverse_chi_squared_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">quantile</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Inverse Chi-Squared Distribution Bayes Example</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example"><span class="index-entry-level-1">variance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Inverse Gamma Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">inverse_gamma_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">kurtosis_excess</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">quantile</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">shape</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">variance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Inverse Gaussian (or Inverse Normal) Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">inverse_gaussian</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">inverse_gaussian_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">mean</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">quantile</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">shape</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">inverse_chi_squared</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-0">inverse_chi_squared_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-0">inverse_gamma_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">inverse_gaussian</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">inverse_gaussian_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">iround</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">Rounding Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">isfinite</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">isinf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">isnan</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">isnormal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fpclass.html" title="Floating-Point Classification: Infinities and NaNs"><span class="index-entry-level-1">Floating-Point Classification: Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Iteration Limits Policies</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/iteration_pol.html" title="Iteration Limits Policies"><span class="index-entry-level-1">BOOST_MATH_MAX_ROOT_ITERATION_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/iteration_pol.html" title="Iteration Limits Policies"><span class="index-entry-level-1">BOOST_MATH_MAX_SERIES_ITERATION_POLICY</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">itrunc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">Truncation Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_105"></a><span class="term">J</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function cd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_cd.html" title="Jacobi Elliptic Function cd"><span class="index-entry-level-1">jacobi_cd</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function cn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_cn.html" title="Jacobi Elliptic Function cn"><span class="index-entry-level-1">jacobi_cn</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function cs</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_cs.html" title="Jacobi Elliptic Function cs"><span class="index-entry-level-1">jacobi_cs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function dc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_dc.html" title="Jacobi Elliptic Function dc"><span class="index-entry-level-1">jacobi_dc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function dn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_dn.html" title="Jacobi Elliptic Function dn"><span class="index-entry-level-1">jacobi_dn</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function ds</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_ds.html" title="Jacobi Elliptic Function ds"><span class="index-entry-level-1">jacobi_ds</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function nc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_nc.html" title="Jacobi Elliptic Function nc"><span class="index-entry-level-1">jacobi_nc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function nd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_nd.html" title="Jacobi Elliptic Function nd"><span class="index-entry-level-1">jacobi_nd</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function ns</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_ns.html" title="Jacobi Elliptic Function ns"><span class="index-entry-level-1">jacobi_ns</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function sc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_sc.html" title="Jacobi Elliptic Function sc"><span class="index-entry-level-1">jacobi_sc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function sd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_sd.html" title="Jacobi Elliptic Function sd"><span class="index-entry-level-1">jacobi_sd</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic Function sn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_sn.html" title="Jacobi Elliptic Function sn"><span class="index-entry-level-1">jacobi_sn</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Jacobi Elliptic SN, CN and DN</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN"><span class="index-entry-level-1">jacobi_elliptic</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_cd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_cd.html" title="Jacobi Elliptic Function cd"><span class="index-entry-level-1">Jacobi Elliptic Function cd</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_cn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_cn.html" title="Jacobi Elliptic Function cn"><span class="index-entry-level-1">Jacobi Elliptic Function cn</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_cs</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_cs.html" title="Jacobi Elliptic Function cs"><span class="index-entry-level-1">Jacobi Elliptic Function cs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_dc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_dc.html" title="Jacobi Elliptic Function dc"><span class="index-entry-level-1">Jacobi Elliptic Function dc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_dn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_dn.html" title="Jacobi Elliptic Function dn"><span class="index-entry-level-1">Jacobi Elliptic Function dn</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_ds</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_ds.html" title="Jacobi Elliptic Function ds"><span class="index-entry-level-1">Jacobi Elliptic Function ds</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_elliptic</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN"><span class="index-entry-level-1">Jacobi Elliptic SN, CN and DN</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_nc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_nc.html" title="Jacobi Elliptic Function nc"><span class="index-entry-level-1">Jacobi Elliptic Function nc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_nd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_nd.html" title="Jacobi Elliptic Function nd"><span class="index-entry-level-1">Jacobi Elliptic Function nd</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_ns</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_ns.html" title="Jacobi Elliptic Function ns"><span class="index-entry-level-1">Jacobi Elliptic Function ns</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_sc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_sc.html" title="Jacobi Elliptic Function sc"><span class="index-entry-level-1">Jacobi Elliptic Function sc</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_sd</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_sd.html" title="Jacobi Elliptic Function sd"><span class="index-entry-level-1">Jacobi Elliptic Function sd</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jacobi_sn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jacobi_sn.html" title="Jacobi Elliptic Function sn"><span class="index-entry-level-1">Jacobi Elliptic Function sn</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_106"></a><span class="term">K</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">kahan_sum_series</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">Series Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Known Issues, and TODO List</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">cyl_bessel_j</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">cyl_neumann</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">T</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">kurtosis</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">kurtosis_excess</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_107"></a><span class="term">L</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">l1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laguerre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/laguerre.html" title="Laguerre (and Associated) Polynomials"><span class="index-entry-level-1">Laguerre (and Associated) Polynomials</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Laguerre (and Associated) Polynomials</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/laguerre.html" title="Laguerre (and Associated) Polynomials"><span class="index-entry-level-1">laguerre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/laguerre.html" title="Laguerre (and Associated) Polynomials"><span class="index-entry-level-1">laguerre_next</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laguerref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laguerrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laguerre_next</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/laguerre.html" title="Laguerre (and Associated) Polynomials"><span class="index-entry-level-1">Laguerre (and Associated) Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Lanczos approximation</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_beta/beta_function.html" title="Beta"><span class="index-entry-level-1">Beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lanczos.html" title="The Lanczos Approximation"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/digamma.html" title="Digamma"><span class="index-entry-level-1">Digamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lanczos.html" title="The Lanczos Approximation"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/tgamma.html" title="Gamma"><span class="index-entry-level-1">Gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">History and What's New</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Hypergeometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Incomplete Gamma Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">Known Issues, and TODO List</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/lanczos.html" title="The Lanczos Approximation"><span class="index-entry-level-1">Lanczos approximation</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">Log Gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Performance Tuning Macros</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/refs.html" title="References"><span class="index-entry-level-1">References</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lanczos.html" title="The Lanczos Approximation"><span class="index-entry-level-1">The Lanczos Approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/use_ntl.html" title="Using NTL Library"><span class="index-entry-level-1">Using NTL Library</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/use_mpfr.html" title="Using With MPFR or GMP - High-Precision Floating-Point Library"><span class="index-entry-level-1">Using With MPFR or GMP - High-Precision Floating-Point Library</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">laplace</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Laplace Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">laplace</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">laplace_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-0">laplace_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lcm</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">LCM Function Object</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lcm_function_object.html" title="LCM Function Object"><span class="index-entry-level-1">lcm_evaluator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lcm_function_object.html" title="LCM Function Object"><span class="index-entry-level-1">second_argument_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lcm_evaluator</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lcm_function_object.html" title="LCM Function Object"><span class="index-entry-level-1">LCM Function Object</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ldexp</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Legendre (and Associated) Polynomials</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/legendre.html" title="Legendre (and Associated) Polynomials"><span class="index-entry-level-1">legendre_next</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/legendre.html" title="Legendre (and Associated) Polynomials"><span class="index-entry-level-1">legendre_p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/legendre.html" title="Legendre (and Associated) Polynomials"><span class="index-entry-level-1">legendre_q</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendre_next</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/legendre.html" title="Legendre (and Associated) Polynomials"><span class="index-entry-level-1">Legendre (and Associated) Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendre_p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/legendre.html" title="Legendre (and Associated) Polynomials"><span class="index-entry-level-1">Legendre (and Associated) Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">legendre_q</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/legendre.html" title="Legendre (and Associated) Polynomials"><span class="index-entry-level-1">Legendre (and Associated) Polynomials</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lgamma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">Log Gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lgammaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lgammal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llrint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llrintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llrintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llround</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">Rounding Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llroundf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">llroundl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lltrunc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">Truncation Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Locating Function Minima: Brent's algorithm</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/minima.html" title="Locating Function Minima: Brent's algorithm"><span class="index-entry-level-1">brent_find_minima</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/minima.html" title="Locating Function Minima: Brent's algorithm"><span class="index-entry-level-1">epsilon</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">location</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">Extreme Value Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">Find Location (Mean) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">Find Scale (Standard Deviation) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Log Gamma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">lgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">tgamma</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Log Normal Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">lognormal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">lognormal_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">variance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log1p</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/log1p.html" title="log1p"><span class="index-entry-level-1">BOOST_HAS_LOG1P</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/powers/log1p.html" title="log1p"><span class="index-entry-level-1">log1p</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">Series Evaluation</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log1pf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log1pl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log1p_series</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">Series Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log2</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">Compile Time Power of a Runtime Base</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log2f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log2l</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">logb</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">logbf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">logbl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">logistic</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Logistic Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">logistic</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">logistic_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">variance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-0">logistic_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lognormal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lognormal_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lrint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lrintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lrintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lround</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">Rounding Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lroundf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">lroundl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ltrunc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">Truncation Functions</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_108"></a><span class="term">M</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">make_periodic_param</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">make_policy</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">make_power_param</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">make_random_param</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Mathematical Constants</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../constants.html" title="Chapter 6. Mathematical Constants"><span class="index-entry-level-1">constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Mathematically Undefined Function Policies</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/assert_undefined.html" title="Mathematically Undefined Function Policies"><span class="index-entry-level-1">BOOST_MATH_ASSERT_UNDEFINED_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/assert_undefined.html" title="Mathematically Undefined Function Policies"><span class="index-entry-level-1">expression</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">max_factorial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_factorial.html" title="Factorial"><span class="index-entry-level-1">Factorial</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mean</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/dist_construct_eg.html" title="Distribution Construction Examples"><span class="index-entry-level-1">Distribution Construction Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">Find Location (Mean) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">Find Scale (Standard Deviation) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">Poisson Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">Uniform Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">median</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Minimax Approximations and the Remez Algorithm</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/minimax.html" title="Minimax Approximations and the Remez Algorithm"><span class="index-entry-level-1">constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mode</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">History and What's New</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Modified Bessel Functions of the First and Second Kinds</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">cyl_bessel_i</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">cyl_bessel_k</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">msg</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">multipolar</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_create.html" title="Octonion Creation Functions"><span class="index-entry-level-1">Octonion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_109"></a><span class="term">N</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Namespaces</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/namespaces.html" title="Namespaces"><span class="index-entry-level-1">students_t</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nan</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets/facets_intro.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets/reference.html" title="Reference"><span class="index-entry-level-1">Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nanf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nanl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/navigation.html" title="Navigation"><span class="index-entry-level-0">navigation</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nearbyint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nearbyintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nearbyintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Negative Binomial Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">find_lower_bound_on_p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">find_upper_bound_on_p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">ibetac_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">ibetac_inva</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">ibetac_invb</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">ibeta_inv</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">ibeta_inva</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">ibeta_invb</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">negative_binomial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">negative_binomial_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">r</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Negative Binomial Sales Quota Example.</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">BOOST_MATH_OVERFLOW_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">quantile</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">negative_binomial</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/dist_construct_eg.html" title="Distribution Construction Examples"><span class="index-entry-level-1">Distribution Construction Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-0">negative_binomial_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">newton_raphson_iterate</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nextafter</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/nextafter.html" title="Finding the Next Representable Value in a Specific Direction (nextafter)"><span class="index-entry-level-1">Finding the Next Representable Value in a Specific Direction (nextafter)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">History and What's New</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nextafterf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nextafterl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nexttoward</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nexttowardf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nexttowardl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Non-Member Properties</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">cdf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">chf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">hazard</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">kurtosis</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">kurtosis_excess</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">mean</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">median</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">mode</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">pdf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">quantile</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">range</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">skewness</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">standard_deviation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">variance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Noncentral Beta Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">non_central_beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">non_central_beta_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Noncentral Chi-Squared Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">find_degrees_of_freedom</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">find_non_centrality</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">non_central_chi_squared</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">non_central_chi_squared_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Noncentral F Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">non_central_f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">non_central_f_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Noncentral T Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">non_central_t</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">non_central_t_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nonfinite_num_get</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets.html" title="Facets for Floating-Point Infinities and NaNs"><span class="index-entry-level-1">Facets for Floating-Point Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nonfinite_num_put</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets.html" title="Facets for Floating-Point Infinities and NaNs"><span class="index-entry-level-1">Facets for Floating-Point Infinities and NaNs</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_beta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_beta_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_chi_squared</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_chi_squared_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_f</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">Noncentral F Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_f_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">Noncentral F Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">Noncentral T Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">non_central_t_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">Noncentral T Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">norm</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">normal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/geometric_eg.html" title="Geometric Distribution Examples"><span class="index-entry-level-1">Geometric Distribution Examples</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Normal (Gaussian) Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">erfc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">mean</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">normal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">normal_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">standard_deviation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">normalise</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">normal_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_110"></a><span class="term">O</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">octonion</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_mem_fun.html" title="Octonion Member Functions"><span class="index-entry-level-1">Octonion Member Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_non_mem.html" title="Octonion Non-Member Operators"><span class="index-entry-level-1">Octonion Non-Member Operators</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">Octonion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">Template Class octonion</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Octonion Creation Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_create.html" title="Octonion Creation Functions"><span class="index-entry-level-1">cylindrical</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_create.html" title="Octonion Creation Functions"><span class="index-entry-level-1">multipolar</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_create.html" title="Octonion Creation Functions"><span class="index-entry-level-1">spherical</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Octonion Member Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_mem_fun.html" title="Octonion Member Functions"><span class="index-entry-level-1">octonion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_mem_fun.html" title="Octonion Member Functions"><span class="index-entry-level-1">unreal</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Octonion Member Typedefs</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_typedefs.html" title="Octonion Member Typedefs"><span class="index-entry-level-1">value_type</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Octonion Non-Member Operators</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_non_mem.html" title="Octonion Non-Member Operators"><span class="index-entry-level-1">octonion</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Octonion Specializations</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">octonion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">unreal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Octonion Value Operations</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">conj</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">l1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">norm</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">sup</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">unreal</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">overflow_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Overvew of the Jacobi Elliptic Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/jacobi/jac_over.html" title="Overvew of the Jacobi Elliptic Functions"><span class="index-entry-level-1">expression</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Owen's T function</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/owens_t.html" title="Owen's T function"><span class="index-entry-level-1">owens_t</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">owens_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/owens_t.html" title="Owen's T function"><span class="index-entry-level-1">Owen's T function</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_111"></a><span class="term">P</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pareto</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">Pareto Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Pareto Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">pareto</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">pareto_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">shape</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-0">pareto_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pdf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/generic.html" title="Generic operations common to all distributions are non-member functions"><span class="index-entry-level-1">Generic operations common to all distributions are non-member functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Performance Tuning Macros</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">BOOST_MATH_INT_TABLE_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">BOOST_MATH_MAX_POLY_ORDER</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">BOOST_MATH_POLY_METHOD</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">BOOST_MATH_PROMOTE_DOUBLE_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">BOOST_MATH_RATIONAL_METHOD</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tuning.html" title="Performance Tuning Macros"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">poisson</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">Poisson Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Poisson Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">mean</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">poisson</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">poisson_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-0">poisson_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pole_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Policy Class Reference</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">assert_undefined_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">default_policy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">denorm_error_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">discrete_quantile_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">domain_error_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">evaluation_error_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">indeterminate_result_error_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">make_policy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">normalise</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">overflow_error_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">pole_error_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">precision_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">promote_double_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">promote_float_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">rounding_error_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">underflow_error_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">policy_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">Bernoulli Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">Exponential Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Hypergeometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">Noncentral F Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">Noncentral T Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">Poisson Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">Rayleigh Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Polynomial and Rational Function Evaluation</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">evaluate_even_polynomial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">evaluate_odd_polynomial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">evaluate_polynomial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">evaluate_rational</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">T</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Polynomials</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/polynomials.html" title="Polynomials"><span class="index-entry-level-1">value_type</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/powm1.html" title="powm1"><span class="index-entry-level-0">powm1</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">precision_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">promote_args</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">promote_double_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">promote_float_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_112"></a><span class="term">Q</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">quantile</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/complements.html" title="Complements are supported too - and when to use them"><span class="index-entry-level-1">Complements are supported too - and when to use them</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_concept.html" title="Conceptual Requirements for Distribution Types"><span class="index-entry-level-1">Conceptual Requirements for Distribution Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html" title="Negative Binomial Sales Quota Example."><span class="index-entry-level-1">Negative Binomial Sales Quota Example.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/normal_example/normal_misc.html" title="Some Miscellaneous Examples of the Normal (Gaussian) Distribution"><span class="index-entry-level-1">Some Miscellaneous Examples of the Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">quaternion</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_mem_fun.html" title="Quaternion Member Functions"><span class="index-entry-level-1">Quaternion Member Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_non_mem.html" title="Quaternion Non-Member Operators"><span class="index-entry-level-1">Quaternion Non-Member Operators</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">Quaternion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">Template Class quaternion</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Quaternion Creation Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">cylindrical</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">cylindrospherical</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">multipolar</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">semipolar</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">spherical</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Quaternion Member Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_mem_fun.html" title="Quaternion Member Functions"><span class="index-entry-level-1">quaternion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_mem_fun.html" title="Quaternion Member Functions"><span class="index-entry-level-1">unreal</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Quaternion Member Typedefs</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/mem_typedef.html" title="Quaternion Member Typedefs"><span class="index-entry-level-1">value_type</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Quaternion Non-Member Operators</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_non_mem.html" title="Quaternion Non-Member Operators"><span class="index-entry-level-1">quaternion</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Quaternion Specializations</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">quaternion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">unreal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Quaternion Value Operations</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">conj</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">l1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">norm</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">sup</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">unreal</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_113"></a><span class="term">R</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">r</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">range</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compilers_overview.html" title="Compilers"><span class="index-entry-level-1">Compilers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Ratios of Gamma Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions"><span class="index-entry-level-1">tgamma_delta_ratio</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions"><span class="index-entry-level-1">tgamma_ratio</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rayleigh</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">Rayleigh Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Rayleigh Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">rayleigh</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">rayleigh_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-0">rayleigh_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Reference</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/fp_facets/reference.html" title="Reference"><span class="index-entry-level-1">nan</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">References</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/refs.html" title="References"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Relative Error and Testing</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/error_test.html" title="Relative Error and Testing"><span class="index-entry-level-1">relative_error</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/error_test.html" title="Relative Error and Testing"><span class="index-entry-level-1">test</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">relative_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/error_test.html" title="Relative Error and Testing"><span class="index-entry-level-1">Relative Error and Testing</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remainder</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remainderf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remainderl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Remez Method</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/remez.html" title="The Remez Method"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/remez.html" title="The Remez Method"><span class="index-entry-level-1">expression</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remquo</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remquof</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">remquol</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Representation Distance Between Two Floating Point Values (ULP) float_distance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_distance.html" title="Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance"><span class="index-entry-level-1">float_distance</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_distance.html" title="Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance"><span class="index-entry-level-1">value</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Riemann Zeta Function</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/zetas/zeta.html" title="Riemann Zeta Function"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/zetas/zeta.html" title="Riemann Zeta Function"><span class="index-entry-level-1">zeta</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">riemann_zeta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">riemann_zetaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">riemann_zetal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rint</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rintf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rintl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_rising_factorial.html" title="Rising Factorial"><span class="index-entry-level-0">Rising Factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/factorials/sf_rising_factorial.html" title="Rising Factorial"><span class="index-entry-level-0">rising_factorial</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">cbrt</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">halley_iterate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">newton_raphson_iterate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">schroeder_iterate</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">eps_tolerance</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">equal_ceil</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">equal_floor</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">equal_nearest_integer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">tol</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">round</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">Rounding Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">roundf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Rounding Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">iround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">llround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">lround</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/round.html" title="Rounding Functions"><span class="index-entry-level-1">round</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rounding_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">roundl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_114"></a><span class="term">S</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalbln</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalblnf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalblnl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalbn</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalbnf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scalbnl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">scale</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">Extreme Value Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html" title="Find mean and standard deviation example"><span class="index-entry-level-1">Find mean and standard deviation example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">Find Scale (Standard Deviation) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example"><span class="index-entry-level-1">Inverse Chi-Squared Distribution Bayes Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">Pareto Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">schroeder_iterate</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder"><span class="index-entry-level-1">Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">second_argument_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/gcd_function_object.html" title="GCD Function Object"><span class="index-entry-level-1">GCD Function Object</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/lcm_function_object.html" title="LCM Function Object"><span class="index-entry-level-1">LCM Function Object</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">semipolar</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Series Evaluation</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">kahan_sum_series</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">log1p</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">log1p_series</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">sum_series</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Setting Polices at Namespace Scope</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">BOOST_MATH_DECLARE_DISTRIBUTIONS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">cauchy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">lgamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">tgamma</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Setting Policies at Namespace or Translation Unit Scope</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">BOOST_MATH_DECLARE_DISTRIBUTIONS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">cauchy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">norm</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">normal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">promote_args</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">quantile</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">tgamma</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Setting Policies for Distributions on an Ad Hoc Basis</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/ad_hoc_dist_policies.html" title="Setting Policies for Distributions on an Ad Hoc Basis"><span class="index-entry-level-1">fisher_f</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">shape</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">Pareto Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sign</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">Sign Manipulation Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Sign Manipulation Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">changesign</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">copysign</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">sign</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">signbit</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">signbit</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sign_functions.html" title="Sign Manipulation Functions"><span class="index-entry-level-1">Sign Manipulation Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sinc/sinc_pi.html" title="sinc_pi"><span class="index-entry-level-0">sinc_pi</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sinc/sinhc_pi.html" title="sinhc_pi"><span class="index-entry-level-0">sinhc_pi</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/sin_pi.html" title="sin_pi"><span class="index-entry-level-0">sin_pi</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Skew Normal Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">location</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">normal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">quantile</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">shape</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">skew_normal_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">T</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">skewness</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">Bernoulli Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-0">skew_normal_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Some Miscellaneous Examples of the Normal (Gaussian) Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/normal_example/normal_misc.html" title="Some Miscellaneous Examples of the Normal (Gaussian) Distribution"><span class="index-entry-level-1">quantile</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/normal_example/normal_misc.html" title="Some Miscellaneous Examples of the Normal (Gaussian) Distribution"><span class="index-entry-level-1">test</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">spherical</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_create.html" title="Octonion Creation Functions"><span class="index-entry-level-1">Octonion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/create.html" title="Quaternion Creation Functions"><span class="index-entry-level-1">Quaternion Creation Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Spherical Bessel Functions of the First and Second Kinds</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">sph_bessel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">sph_neumann</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Spherical Harmonics</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/sph_harm.html" title="Spherical Harmonics"><span class="index-entry-level-1">spherical_harmonic</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/sph_harm.html" title="Spherical Harmonics"><span class="index-entry-level-1">spherical_harmonic_i</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/sph_harm.html" title="Spherical Harmonics"><span class="index-entry-level-1">spherical_harmonic_r</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">spherical_harmonic</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/sph_harm.html" title="Spherical Harmonics"><span class="index-entry-level-1">Spherical Harmonics</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">spherical_harmonic_i</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/sph_harm.html" title="Spherical Harmonics"><span class="index-entry-level-1">Spherical Harmonics</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">spherical_harmonic_r</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_poly/sph_harm.html" title="Spherical Harmonics"><span class="index-entry-level-1">Spherical Harmonics</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_bessel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Spherical Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_besself</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_bessell</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_legendre</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_legendref</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_legendrel</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_neumann</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds"><span class="index-entry-level-1">Spherical Bessel Functions of the First and Second Kinds</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_neumannf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sph_neumannl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">TR1 C Functions Quick Reference</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/sqrt1pm1.html" title="sqrt1pm1"><span class="index-entry-level-0">sqrt1pm1</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">standard_deviation</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_location_eg.html" title="Find Location (Mean) Example"><span class="index-entry-level-1">Find Location (Mean) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html" title="Find Scale (Standard Deviation) Example"><span class="index-entry-level-1">Find Scale (Standard Deviation) Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Students t Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">find_degrees_of_freedom</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">ibetac</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">students_t</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">students_t_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">students_t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/namespaces.html" title="Namespaces"><span class="index-entry-level-1">Namespaces</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-0">students_t_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sum_series</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/series_evaluation.html" title="Series Evaluation"><span class="index-entry-level-1">Series Evaluation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sup</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Supported/Tested Compilers</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/compilers_overview.html#math_toolkit.compilers_overview.supported_tested_compilers" title="Table 1.9. Supported/Tested Compilers"><span class="index-entry-level-1">BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Synopsis</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">conj</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">cylindrical</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">cylindrospherical</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/synopsis.html" title="Synopsis"><span class="index-entry-level-1">gcd</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">l1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/synopsis.html" title="Synopsis"><span class="index-entry-level-1">lcm</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">multipolar</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">norm</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">semipolar</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_synopsis.html" title="Synopsis"><span class="index-entry-level-1">spherical</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">sup</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">unreal</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_115"></a><span class="term">T</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">t</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html" title="Calculating confidence intervals on the mean with the Students-t distribution"><span class="index-entry-level-1">Calculating confidence intervals on the mean with the Students-t distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/issues.html" title="Known Issues, and TODO List"><span class="index-entry-level-1">Known Issues, and TODO List</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/rational.html" title="Polynomial and Rational Function Evaluation"><span class="index-entry-level-1">Polynomial and Rational Function Evaluation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Template Class octonion</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">octonion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">unreal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Template Class quaternion</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">quaternion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">unreal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">test</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/error_test.html" title="Relative Error and Testing"><span class="index-entry-level-1">Relative Error and Testing</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/normal_example/normal_misc.html" title="Some Miscellaneous Examples of the Normal (Gaussian) Distribution"><span class="index-entry-level-1">Some Miscellaneous Examples of the Normal (Gaussian) Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">test_data</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/ad_hoc_sf_policies.html" title="Changing the Policy on an Ad Hoc Basis for the Special Functions"><span class="index-entry-level-1">Changing the Policy on an Ad Hoc Basis for the Special Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_tgamma_a_" title="Table 3.6. Errors In the Function tgamma(a,z)"><span class="index-entry-level-1">Errors In the Function tgamma(a,z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/tgamma.html" title="Gamma"><span class="index-entry-level-1">Gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Incomplete Gamma Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/lgamma.html" title="Log Gamma"><span class="index-entry-level-1">Log Gamma</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope"><span class="index-entry-level-1">Setting Polices at Namespace Scope</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope"><span class="index-entry-level-1">Setting Policies at Namespace or Translation Unit Scope</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma1pm1</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/tgamma.html" title="Gamma"><span class="index-entry-level-1">Gamma</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgammaf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgammal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma_delta_ratio</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.errors_in_the_function_tgamma_de" title="Table 3.1. Errors In the Function tgamma_delta_ratio(a, delta)"><span class="index-entry-level-1">Errors In the Function tgamma_delta_ratio(a, delta)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions"><span class="index-entry-level-1">Ratios of Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma_lower</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html#math_toolkit.sf_gamma.igamma.errors_in_the_function_tgamma_lo" title="Table 3.5. Errors In the Function tgamma_lower(a,z)"><span class="index-entry-level-1">Errors In the Function tgamma_lower(a,z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/igamma.html" title="Incomplete Gamma Functions"><span class="index-entry-level-1">Incomplete Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tgamma_ratio</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.errors_in_the_function_tgamma_ra" title="Table 3.2. Errors In the Function tgamma_ratio(a, b)"><span class="index-entry-level-1">Errors In the Function tgamma_ratio(a, b)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions"><span class="index-entry-level-1">Ratios of Gamma Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">To Do</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_todo.html" title="To Do"><span class="index-entry-level-1">expression</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tol</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748"><span class="index-entry-level-1">Root Finding Without Derivatives: Bisection, Bracket and TOMS748</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">TR1 C Functions Quick Reference</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">assoc_laguerre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">assoc_laguerref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">assoc_laguerrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">assoc_legendre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">assoc_legendref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">assoc_legendrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">beta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">betaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">betal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">comp_ellint_1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">comp_ellint_1f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">comp_ellint_1l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">comp_ellint_2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">comp_ellint_2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">comp_ellint_2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">comp_ellint_3</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">comp_ellint_3f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">comp_ellint_3l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">conf_hyperg</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">conf_hypergf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">conf_hypergl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_bessel_i</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_bessel_if</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_bessel_il</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_bessel_j</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_bessel_jf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_bessel_jl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_bessel_k</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_bessel_kf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_bessel_kl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_neumann</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_neumannf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">cyl_neumannl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">ellint_1</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">ellint_1f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">ellint_1l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">ellint_2</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">ellint_2f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">ellint_2l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">ellint_3</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">ellint_3f</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">ellint_3l</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">expint</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">expintf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">expintl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">hermite</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">hermitef</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">hermitel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">hyperg</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">hypergf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">hypergl</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">laguerre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">laguerref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">laguerrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">legendre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">legendref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">legendrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">riemann_zeta</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">riemann_zetaf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">riemann_zetal</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">sph_bessel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">sph_besself</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">sph_bessell</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">sph_legendre</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">sph_legendref</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">sph_legendrel</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">sph_neumann</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">sph_neumannf</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tr1_ref.html" title="TR1 C Functions Quick Reference"><span class="index-entry-level-1">sph_neumannl</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">triangular</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Triangular Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">c</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">mode</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">quantile</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">skewness</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">triangular</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">triangular_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">variance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">triangular_distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/sf_implementation.html" title="Additional Implementation Notes"><span class="index-entry-level-1">Additional Implementation Notes</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">trunc</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/concepts.html" title="Conceptual Requirements for Real Number Types"><span class="index-entry-level-1">Conceptual Requirements for Real Number Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">Truncation Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Truncation Functions</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">itrunc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">lltrunc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">ltrunc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/rounding/trunc.html" title="Truncation Functions"><span class="index-entry-level-1">trunc</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">truncf</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">truncl</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/overview_tr1.html" title="C99 and C++ TR1 C-style Functions"><span class="index-entry-level-1">C99 and C++ TR1 C-style Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/main_tr1.html" title="C99 and TR1 C Functions Overview"><span class="index-entry-level-1">C99 and TR1 C Functions Overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/c99.html" title="C99 C Functions"><span class="index-entry-level-1">C99 C Functions</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_116"></a><span class="term">U</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">underflow_error_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference"><span class="index-entry-level-1">Policy Class Reference</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">uniform</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">Uniform Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Uniform Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">mean</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">uniform</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">uniform_distribution</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">variance</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-0">uniform_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">unreal</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_mem_fun.html" title="Octonion Member Functions"><span class="index-entry-level-1">Octonion Member Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">Octonion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_value_ops.html" title="Octonion Value Operations"><span class="index-entry-level-1">Octonion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_mem_fun.html" title="Quaternion Member Functions"><span class="index-entry-level-1">Quaternion Member Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">Quaternion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/value_op.html" title="Quaternion Value Operations"><span class="index-entry-level-1">Quaternion Value Operations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat_synopsis.html" title="Synopsis"><span class="index-entry-level-1">Synopsis</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">Template Class octonion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">Template Class quaternion</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">upper_incomplete_gamma_fract</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Use in non-template code</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/non_templ.html" title="Use in non-template code"><span class="index-entry-level-1">constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Use in template code</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/templ.html" title="Use in template code"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/templ.html" title="Use in template code"><span class="index-entry-level-1">expression</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Use With User-Defined Types</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/user_def.html" title="Use With User-Defined Types"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/user_def.html" title="Use With User-Defined Types"><span class="index-entry-level-1">construction_traits</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/tutorial/user_def.html" title="Use With User-Defined Types"><span class="index-entry-level-1">get</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_denorm_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_domain_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_evaluation_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_indeterminate_result_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_overflow_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/powers/ct_pow.html" title="Compile Time Power of a Runtime Base"><span class="index-entry-level-1">Compile Time Power of a Runtime Base</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_pole_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_rounding_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_underflow_error</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers"><span class="index-entry-level-1">Calling User Defined Error Handlers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/error_handling_policies.html" title="Error Handling Policies"><span class="index-entry-level-1">Error Handling Policies</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Using Boost.Math with High-Precision Floating-Point Libraries</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries"><span class="index-entry-level-1">constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Using Boost.Multiprecision</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/use_multiprecision.html" title="Using Boost.Multiprecision"><span class="index-entry-level-1">constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Using e_float Library</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/e_float.html" title="Using e_float Library"><span class="index-entry-level-1">e_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Using Macros to Change the Policy Defaults</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_ASSERT_UNDEFINED_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_DENORM_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_DIGITS10_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_DOMAIN_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_EVALUATION_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_MAX_ROOT_ITERATION_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_MAX_SERIES_ITERATION_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_OVERFLOW_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_POLE_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_PROMOTE_DOUBLE_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_PROMOTE_FLOAT_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_ROUNDING_ERROR_POLICY</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults"><span class="index-entry-level-1">BOOST_MATH_UNDERFLOW_ERROR_POLICY</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Using NTL Library</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/use_ntl.html" title="Using NTL Library"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Using with GCC's __float128 datatype</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/float128.html" title="Using with GCC's __float128 datatype"><span class="index-entry-level-1">constants</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Using With MPFR or GMP - High-Precision Floating-Point Library</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/use_mpfr.html" title="Using With MPFR or GMP - High-Precision Floating-Point Library"><span class="index-entry-level-1">expression</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/use_mpfr.html" title="Using With MPFR or GMP - High-Precision Floating-Point Library"><span class="index-entry-level-1">Lanczos approximation</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Using without expression templates for Boost.Test and others</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/high_precision/using_test.html" title="Using without expression templates for Boost.Test and others"><span class="index-entry-level-1">expression</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_117"></a><span class="term">V</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">value</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/next_float/float_distance.html" title="Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance"><span class="index-entry-level-1">Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/overview/generic.html" title="Generic operations common to all distributions are non-member functions"><span class="index-entry-level-1">Generic operations common to all distributions are non-member functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/history1.html" title="History and What's New"><span class="index-entry-level-1">History and What's New</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">value_type</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/bernoulli_dist.html" title="Bernoulli Distribution"><span class="index-entry-level-1">Bernoulli Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/binomial_dist.html" title="Binomial Distribution"><span class="index-entry-level-1">Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution"><span class="index-entry-level-1">Cauchy-Lorentz Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution"><span class="index-entry-level-1">Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/exp_dist.html" title="Exponential Distribution"><span class="index-entry-level-1">Exponential Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/extreme_dist.html" title="Extreme Value Distribution"><span class="index-entry-level-1">Extreme Value Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/f_dist.html" title="F Distribution"><span class="index-entry-level-1">F Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution"><span class="index-entry-level-1">Gamma (and Erlang) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution"><span class="index-entry-level-1">Hypergeometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution"><span class="index-entry-level-1">Inverse Chi Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution"><span class="index-entry-level-1">Inverse Gaussian (or Inverse Normal) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/laplace_dist.html" title="Laplace Distribution"><span class="index-entry-level-1">Laplace Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution"><span class="index-entry-level-1">Negative Binomial Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution"><span class="index-entry-level-1">Noncentral Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution"><span class="index-entry-level-1">Noncentral Chi-Squared Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution"><span class="index-entry-level-1">Noncentral F Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution"><span class="index-entry-level-1">Noncentral T Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution"><span class="index-entry-level-1">Normal (Gaussian) Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_typedefs.html" title="Octonion Member Typedefs"><span class="index-entry-level-1">Octonion Member Typedefs</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/oct_specialization.html" title="Octonion Specializations"><span class="index-entry-level-1">Octonion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/pareto.html" title="Pareto Distribution"><span class="index-entry-level-1">Pareto Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/poisson_dist.html" title="Poisson Distribution"><span class="index-entry-level-1">Poisson Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/polynomials.html" title="Polynomials"><span class="index-entry-level-1">Polynomials</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/mem_typedef.html" title="Quaternion Member Typedefs"><span class="index-entry-level-1">Quaternion Member Typedefs</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/spec.html" title="Quaternion Specializations"><span class="index-entry-level-1">Quaternion Specializations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/rayleigh.html" title="Rayleigh Distribution"><span class="index-entry-level-1">Rayleigh Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/skew_normal_dist.html" title="Skew Normal Distribution"><span class="index-entry-level-1">Skew Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/students_t_dist.html" title="Students t Distribution"><span class="index-entry-level-1">Students t Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/octonion.html" title="Template Class octonion"><span class="index-entry-level-1">Template Class octonion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/quat.html" title="Template Class quaternion"><span class="index-entry-level-1">Template Class quaternion</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">Uniform Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">variance</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/beta_dist.html" title="Beta Distribution"><span class="index-entry-level-1">Beta Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html" title="Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation"><span class="index-entry-level-1">Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/geometric_dist.html" title="Geometric Distribution"><span class="index-entry-level-1">Geometric Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example"><span class="index-entry-level-1">Inverse Chi-Squared Distribution Bayes Example</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/inverse_gamma_dist.html" title="Inverse Gamma Distribution"><span class="index-entry-level-1">Inverse Gamma Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution"><span class="index-entry-level-1">Log Normal Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/logistic_dist.html" title="Logistic Distribution"><span class="index-entry-level-1">Logistic Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/nmp.html" title="Non-Member Properties"><span class="index-entry-level-1">Non-Member Properties</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/triangular_dist.html" title="Triangular Distribution"><span class="index-entry-level-1">Triangular Distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/uniform_dist.html" title="Uniform Distribution"><span class="index-entry-level-1">Uniform Distribution</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_118"></a><span class="term">W</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">weibull</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">Weibull Distribution</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Weibull Distribution</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">constants</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">policy_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">scale</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">shape</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">value_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">weibull</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-1">weibull_distribution</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/dist_ref/dists/weibull_dist.html" title="Weibull Distribution"><span class="index-entry-level-0">weibull_distribution</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">write_code</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">write_csv</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions"><span class="index-entry-level-1">Graphing, Profiling, and Generating Test Data for Special Functions</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_119"></a><span class="term">Z</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">zeta</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/zetas/zeta.html#math_toolkit.zetas.zeta.errors_in_the_function_zeta_z" title="Table 3.30. Errors In the Function zeta(z)"><span class="index-entry-level-1">Errors In the Function zeta(z)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/expint/expint_i.html" title="Exponential Integral Ei"><span class="index-entry-level-1">Exponential Integral Ei</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../math_toolkit/zetas/zeta.html" title="Riemann Zeta Function"><span class="index-entry-level-1">Riemann Zeta Function</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="s04.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/inverse_complex.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/inverse_complex.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 7. Complex Number Functions</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/constants_faq.html" title="FAQs">
+<link rel="next" href="math_toolkit/complex_implementation.html" title="Implementation and Accuracy">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/constants_faq.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/complex_implementation.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="inverse_complex"></a>Chapter 7. Complex Number Functions</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section"><a href="math_toolkit/complex_implementation.html">Implementation and
+ Accuracy</a></span></dt>
+<dt><span class="section">asin</span></dt>
+<dt><span class="section">acos</span></dt>
+<dt><span class="section">atan</span></dt>
+<dt><span class="section">asinh</span></dt>
+<dt><span class="section">acosh</span></dt>
+<dt><span class="section">atanh</span></dt>
+<dt><span class="section">History</span></dt>
+</dl>
+</div>
+<p>
+ The following complex number algorithms are the inverses of trigonometric functions
+ currently present in the C++ standard. Equivalents to these functions are part
+ of the C99 standard, and are part of the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Technical
+ Report on C++ Library Extensions</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/constants_faq.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/complex_implementation.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/acknowledgement.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/acknowledgement.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="exp.html" title="The Quaternionic Exponential">
+<link rel="next" href="quat_history.html" title="History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="exp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_history.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_acknowledgement">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.acknowledgement"></a><a class="link" href="acknowledgement.html" title="Acknowledgements">Acknowledgements</a>
+</h2></div></div></div>
+<p>
+ The mathematical text has been typeset with <a href="http://www.nisus-soft.com/" target="_top">Nisus
+ Writer</a>. Jens Maurer has helped with portability and standard adherence,
+ and was the Review Manager for this library. More acknowledgements in the History
+ section. Thank you to all who contributed to the discution about this library.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="exp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_history.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/acknowledgements.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/acknowledgements.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_tests.html" title="Test Program">
+<link rel="next" href="oct_history.html" title="History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_tests.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_history.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_acknowledgements">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
+</h2></div></div></div>
+<p>
+ The mathematical text has been typeset with <a href="http://www.nisus-soft.com/" target="_top">Nisus
+ Writer</a>. Jens Maurer has helped with portability and standard adherence,
+ and was the Review Manager for this library. More acknowledgements in the History
+ section. Thank you to all who contributed to the discussion about this library.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_tests.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_history.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/acos.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/acos.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>acos</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+<link rel="prev" href="asin.html" title="asin">
+<link rel="next" href="atan.html" title="atan">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="asin.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="atan.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_acos">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.acos"></a><a class="link" href="acos.html" title="acos">acos</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.acos.h0"></a>
+ <span class="phrase"><a name="math_toolkit.acos.header"></a></span><a class="link" href="acos.html#math_toolkit.acos.header">Header:</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">acos</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<h5>
+<a name="math_toolkit.acos.h1"></a>
+ <span class="phrase"><a name="math_toolkit.acos.synopsis"></a></span><a class="link" href="acos.html#math_toolkit.acos.synopsis">Synopsis:</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">acos</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ <span class="bold"><strong>Effects: </strong></span> returns the inverse cosine of the
+ complex number z.
+ </p>
+<p>
+ <span class="bold"><strong>Formula: </strong></span> <span class="inlinemediaobject"><img src="../../../images/acos.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="asin.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="atan.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/acosh.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/acosh.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>acosh</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+<link rel="prev" href="asinh.html" title="asinh">
+<link rel="next" href="atanh.html" title="atanh">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="asinh.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="atanh.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_acosh">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.acosh"></a><a class="link" href="acosh.html" title="acosh">acosh</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.acosh.h0"></a>
+ <span class="phrase"><a name="math_toolkit.acosh.header"></a></span><a class="link" href="acosh.html#math_toolkit.acosh.header">Header:</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">acosh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<h5>
+<a name="math_toolkit.acosh.h1"></a>
+ <span class="phrase"><a name="math_toolkit.acosh.synopsis"></a></span><a class="link" href="acosh.html#math_toolkit.acosh.synopsis">Synopsis:</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">acosh</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ <span class="bold"><strong>Effects: </strong></span> returns the inverse hyperbolic cosine
+ of the complex number z.
+ </p>
+<p>
+ <span class="bold"><strong>Formula: </strong></span> <span class="inlinemediaobject"><img src="../../../images/acosh.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="asinh.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="atanh.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/airy.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/airy.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="hankel/sph_hankel.html" title="Spherical Hankel Functions">
+<link rel="next" href="airy/ai.html" title="Airy Ai Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="hankel/sph_hankel.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="airy/ai.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_airy">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.airy"></a><a class="link" href="airy.html" title="Airy Functions">Airy Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Airy Ai Function</span></dt>
+<dt><span class="section">Airy Bi Function</span></dt>
+<dt><span class="section">Airy Ai' Function</span></dt>
+<dt><span class="section">Airy Bi' Function</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="hankel/sph_hankel.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="airy/ai.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/airy/ai.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/airy/ai.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,113 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Ai Function</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../airy.html" title="Airy Functions">
+<link rel="prev" href="../airy.html" title="Airy Functions">
+<link rel="next" href="bi.html" title="Airy Bi Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../airy.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="bi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_airy_ai">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.airy.ai"></a><a class="link" href="ai.html" title="Airy Ai Function">Airy Ai Function</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.airy.ai.h0"></a>
+ <span class="phrase"><a name="math_toolkit.airy.ai.synopsis"></a></span><a class="link" href="ai.html#math_toolkit.airy.ai.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">airy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_ai</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_ai</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.airy.ai.h1"></a>
+ <span class="phrase"><a name="math_toolkit.airy.ai.description"></a></span><a class="link" href="ai.html#math_toolkit.airy.ai.description">Description</a>
+ </h5>
+<p>
+ The function <a class="link" href="ai.html" title="Airy Ai Function">airy_ai</a> calculates
+ the Airy function Ai which is the first solution to the differential equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/airy.png"></span>
+ </p>
+<p>
+ See Weisstein, Eric W. "Airy Functions." From MathWorld--A Wolfram
+ Web Resource. http://mathworld.wolfram.com/AiryFunctions.html;
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The following graph illustrates how this function changes as <span class="emphasis"><em>x</em></span>
+ changes: for negative <span class="emphasis"><em>x</em></span> the function is cyclic, while
+ for positive <span class="emphasis"><em>x</em></span> the value tends to zero:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/airy_ai.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.airy.ai.h2"></a>
+ <span class="phrase"><a name="math_toolkit.airy.ai.accuracy"></a></span><a class="link" href="ai.html#math_toolkit.airy.ai.accuracy">Accuracy</a>
+ </h5>
+<p>
+ This function is implemented entirely in terms of the Bessel functions <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a> and <a class="link" href="../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_k</a> - refer to those
+ functions for detailed accuracy information.
+ </p>
+<p>
+ In general though, the relative error is low (less than 100 ε) for <span class="emphasis"><em>x
+ > 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x <
+ 0</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.airy.ai.h3"></a>
+ <span class="phrase"><a name="math_toolkit.airy.ai.testing"></a></span><a class="link" href="ai.html#math_toolkit.airy.ai.testing">Testing</a>
+ </h5>
+<p>
+ Since this function is implemented in terms of other special functions, there
+ are only a few basic sanity checks, using test values from <a href="http://functions.wolfram.com/" target="_top">Wolfram
+ Airy Functions</a>.
+ </p>
+<h5>
+<a name="math_toolkit.airy.ai.h4"></a>
+ <span class="phrase"><a name="math_toolkit.airy.ai.implementation"></a></span><a class="link" href="ai.html#math_toolkit.airy.ai.implementation">Implementation</a>
+ </h5>
+<p>
+ This function is implemented in terms of the Bessel functions using the relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/airy_ai.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../airy.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="bi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/airy/aip.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/airy/aip.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,109 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Ai' Function</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../airy.html" title="Airy Functions">
+<link rel="prev" href="bi.html" title="Airy Bi Function">
+<link rel="next" href="bip.html" title="Airy Bi' Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="bi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="bip.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_airy_aip">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.airy.aip"></a><a class="link" href="aip.html" title="Airy Ai' Function">Airy Ai' Function</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.airy.aip.h0"></a>
+ <span class="phrase"><a name="math_toolkit.airy.aip.synopsis"></a></span><a class="link" href="aip.html#math_toolkit.airy.aip.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">airy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_ai_prime</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_ai_prime</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.airy.aip.h1"></a>
+ <span class="phrase"><a name="math_toolkit.airy.aip.description"></a></span><a class="link" href="aip.html#math_toolkit.airy.aip.description">Description</a>
+ </h5>
+<p>
+ The function <a class="link" href="aip.html" title="Airy Ai' Function">airy_ai_prime</a> calculates
+ the Airy function Ai' which is the derivative of the first solution to the
+ differential equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/airy.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The following graph illustrates how this function changes as <span class="emphasis"><em>x</em></span>
+ changes: for negative <span class="emphasis"><em>x</em></span> the function is cyclic, while
+ for positive <span class="emphasis"><em>x</em></span> the value tends to zero:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/airy_aip.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.airy.aip.h2"></a>
+ <span class="phrase"><a name="math_toolkit.airy.aip.accuracy"></a></span><a class="link" href="aip.html#math_toolkit.airy.aip.accuracy">Accuracy</a>
+ </h5>
+<p>
+ This function is implemented entirely in terms of the Bessel functions <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a> and <a class="link" href="../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_k</a> - refer to those
+ functions for detailed accuracy information.
+ </p>
+<p>
+ In general though, the relative error is low (less than 100 ε) for <span class="emphasis"><em>x
+ > 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x <
+ 0</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.airy.aip.h3"></a>
+ <span class="phrase"><a name="math_toolkit.airy.aip.testing"></a></span><a class="link" href="aip.html#math_toolkit.airy.aip.testing">Testing</a>
+ </h5>
+<p>
+ Since this function is implemented in terms of other special functions, there
+ are only a few basic sanity checks, using test values from functions.wolfram.com.
+ </p>
+<h5>
+<a name="math_toolkit.airy.aip.h4"></a>
+ <span class="phrase"><a name="math_toolkit.airy.aip.implementation"></a></span><a class="link" href="aip.html#math_toolkit.airy.aip.implementation">Implementation</a>
+ </h5>
+<p>
+ This function is implemented in terms of the Bessel functions using the relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/airy_aip.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="bip.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/airy/bi.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/airy/bi.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,108 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Bi Function</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../airy.html" title="Airy Functions">
+<link rel="prev" href="ai.html" title="Airy Ai Function">
+<link rel="next" href="aip.html" title="Airy Ai' Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ai.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="aip.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_airy_bi">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.airy.bi"></a><a class="link" href="bi.html" title="Airy Bi Function">Airy Bi Function</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.airy.bi.h0"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bi.synopsis"></a></span><a class="link" href="bi.html#math_toolkit.airy.bi.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">airy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_bi</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_bi</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.airy.bi.h1"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bi.description"></a></span><a class="link" href="bi.html#math_toolkit.airy.bi.description">Description</a>
+ </h5>
+<p>
+ The function <a class="link" href="bi.html" title="Airy Bi Function">airy_bi</a> calculates
+ the Airy function Bi which is the second solution to the differential equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/airy.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The following graph illustrates how this function changes as <span class="emphasis"><em>x</em></span>
+ changes: for negative <span class="emphasis"><em>x</em></span> the function is cyclic, while
+ for positive <span class="emphasis"><em>x</em></span> the value tends to infinity:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/airy_bi.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.airy.bi.h2"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bi.accuracy"></a></span><a class="link" href="bi.html#math_toolkit.airy.bi.accuracy">Accuracy</a>
+ </h5>
+<p>
+ This function is implemented entirely in terms of the Bessel functions <a class="link" href="../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a> and <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ - refer to those functions for detailed accuracy information.
+ </p>
+<p>
+ In general though, the relative error is low (less than 100 ε) for <span class="emphasis"><em>x
+ > 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x <
+ 0</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.airy.bi.h3"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bi.testing"></a></span><a class="link" href="bi.html#math_toolkit.airy.bi.testing">Testing</a>
+ </h5>
+<p>
+ Since this function is implemented in terms of other special functions, there
+ are only a few basic sanity checks, using test values from functions.wolfram.com.
+ </p>
+<h5>
+<a name="math_toolkit.airy.bi.h4"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bi.implementation"></a></span><a class="link" href="bi.html#math_toolkit.airy.bi.implementation">Implementation</a>
+ </h5>
+<p>
+ This function is implemented in terms of the Bessel functions using the relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/airy_bi.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ai.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="aip.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/airy/bip.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/airy/bip.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,109 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Airy Bi' Function</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../airy.html" title="Airy Functions">
+<link rel="prev" href="aip.html" title="Airy Ai' Function">
+<link rel="next" href="../ellint.html" title="Elliptic Integrals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="aip.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../ellint.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_airy_bip">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.airy.bip"></a><a class="link" href="bip.html" title="Airy Bi' Function">Airy Bi' Function</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.airy.bip.h0"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bip.synopsis"></a></span><a class="link" href="bip.html#math_toolkit.airy.bip.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">airy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_bi_prime</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">airy_bi_prime</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.airy.bip.h1"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bip.description"></a></span><a class="link" href="bip.html#math_toolkit.airy.bip.description">Description</a>
+ </h5>
+<p>
+ The function <a class="link" href="bip.html" title="Airy Bi' Function">airy_bi_prime</a> calculates
+ the Airy function Bi' which is the derivative of the second solution to the
+ differential equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/airy.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The following graph illustrates how this function changes as <span class="emphasis"><em>x</em></span>
+ changes: for negative <span class="emphasis"><em>x</em></span> the function is cyclic, while
+ for positive <span class="emphasis"><em>x</em></span> the value tends to infinity:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/airy_bi.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.airy.bip.h2"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bip.accuracy"></a></span><a class="link" href="bip.html#math_toolkit.airy.bip.accuracy">Accuracy</a>
+ </h5>
+<p>
+ This function is implemented entirely in terms of the Bessel functions <a class="link" href="../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a> and <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ - refer to those functions for detailed accuracy information.
+ </p>
+<p>
+ In general though, the relative error is low (less than 100 ε) for <span class="emphasis"><em>x
+ > 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x <
+ 0</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.airy.bip.h3"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bip.testing"></a></span><a class="link" href="bip.html#math_toolkit.airy.bip.testing">Testing</a>
+ </h5>
+<p>
+ Since this function is implemented in terms of other special functions, there
+ are only a few basic sanity checks, using test values from functions.wolfram.com.
+ </p>
+<h5>
+<a name="math_toolkit.airy.bip.h4"></a>
+ <span class="phrase"><a name="math_toolkit.airy.bip.implementation"></a></span><a class="link" href="bip.html#math_toolkit.airy.bip.implementation">Implementation</a>
+ </h5>
+<p>
+ This function is implemented in terms of the Bessel functions using the relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/airy_bip.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="aip.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../airy.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../ellint.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/archetypes.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/archetypes.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,187 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Conceptual Archetypes for Reals and Distributions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../using_udt.html" title="Chapter 12. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others">
+<link rel="prev" href="dist_concept.html" title="Conceptual Requirements for Distribution Types">
+<link rel="next" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="dist_concept.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../using_udt.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../policy.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_archetypes">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.archetypes"></a><a class="link" href="archetypes.html" title="Conceptual Archetypes for Reals and Distributions">Conceptual Archetypes for Reals
+ and Distributions</a>
+</h2></div></div></div>
+<p>
+ There are a few concept archetypes available:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Real concept for floating-point types.
+ </li>
+<li class="listitem">
+ distribution Concept for statistical distributions.
+ </li>
+</ul></div>
+<h6>
+<a name="math_toolkit.archetypes.h0"></a>
+ <span class="phrase"><a name="math_toolkit.archetypes.real_concept"></a></span><a class="link" href="archetypes.html#math_toolkit.archetypes.real_concept">Real
+ concept</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="identifier">std_real_concept</span></code> is an archetype
+ for theReal types, including the built-in float, double, long double.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">concepts</span><span class="special">/</span><span class="identifier">std_real_concept</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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">namespace</span> <span class="identifier">concepts</span>
+<span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">std_real_concept</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The main purpose in providing this type is to verify that standard library
+ functions are found via a using declaration - bringing those functions into
+ the current scope - and not just because they happen to be in global scope.
+ </p>
+<p>
+ In order to ensure that a call to say <code class="computeroutput"><span class="identifier">pow</span></code>
+ can be found either via argument dependent lookup, or failing that then in
+ the std namespace: all calls to standard library functions are unqualified,
+ with the std:: versions found via a <code class="computeroutput"><span class="keyword">using</span></code>
+ declaration to make them visible in the current scope. Unfortunately it's all
+ to easy to forget the <code class="computeroutput"><span class="keyword">using</span></code> declaration,
+ and call the double version of the function that happens to be in the global
+ scope by mistake.
+ </p>
+<p>
+ For example if the code calls ::pow rather than std::pow, the code will cleanly
+ compile, but truncation of long doubles to double will cause a significant
+ loss of precision. In contrast a template instantiated with std_real_concept
+ will <span class="bold"><strong>only</strong></span> compile if the all the standard
+ library functions used have been brought into the current scope with a using
+ declaration.
+ </p>
+<h3>
+<a name="math_toolkit.archetypes.h1"></a>
+ <span class="phrase"><a name="math_toolkit.archetypes.testing_the_real_concept"></a></span><a class="link" href="archetypes.html#math_toolkit.archetypes.testing_the_real_concept">Testing
+ the real concept</a>
+ </h3>
+<p>
+ There is a test program libs/math/test/std_real_concept_check.cpp
+ that instantiates every template in this library with type <code class="computeroutput"><span class="identifier">std_real_concept</span></code>
+ to verify its usage of standard library functions.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">concepts</span><span class="special">/</span><span class="identifier">real_concept</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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">namespace</span> <span class="identifier">concepts</span><span class="special">{</span>
+
+<span class="keyword">class</span> <span class="identifier">real_concept</span><span class="special">;</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="identifier">real_concept</span></code> is an archetype
+ for <a class="link" href="concepts.html" title="Conceptual Requirements for Real Number Types">user defined real types</a>, it
+ declares its standard library functions in its own namespace: these will only
+ be found if they are called unqualified allowing argument dependent lookup
+ to locate them. In addition this type is useable at runtime: this allows code
+ that would not otherwise be exercised by the built-in floating point types
+ to be tested. There is no std::numeric_limits<> support for this type,
+ since numeric_limits is not a conceptual requirement for <a class="link" href="concepts.html" title="Conceptual Requirements for Real Number Types">RealType</a>s.
+ </p>
+<p>
+ NTL RR is an example of a type meeting the requirements that this type models,
+ but note that use of a thin wrapper class is required: refer to <a class="link" href="high_precision/use_ntl.html" title="Using NTL Library">"Using
+ With NTL - a High-Precision Floating-Point Library"</a>.
+ </p>
+<p>
+ There is no specific test case for type <code class="computeroutput"><span class="identifier">real_concept</span></code>,
+ instead, since this type is usable at runtime, each individual test case as
+ well as testing <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>, also tests <code class="computeroutput"><span class="identifier">real_concept</span></code>.
+ </p>
+<h3>
+<a name="math_toolkit.archetypes.h2"></a>
+ <span class="phrase"><a name="math_toolkit.archetypes.distribution_concept"></a></span><a class="link" href="archetypes.html#math_toolkit.archetypes.distribution_concept">Distribution
+ Concept</a>
+ </h3>
+<p>
+ Distribution Concept models statistical distributions.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">concepts</span><span class="special">/</span><span class="identifier">distribution</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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">namespace</span> <span class="identifier">concepts</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">distribution_archetype</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Distribution</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">DistributionConcept</span><span class="special">;</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The class template <code class="computeroutput"><span class="identifier">distribution_archetype</span></code>
+ is a model of the <a class="link" href="dist_concept.html" title="Conceptual Requirements for Distribution Types">Distribution concept</a>.
+ </p>
+<p>
+ The class template <code class="computeroutput"><span class="identifier">DistributionConcept</span></code>
+ is a <a href="../../../../../../libs/concept_check/index.html" target="_top">concept checking
+ class</a> for distribution types.
+ </p>
+<h3>
+<a name="math_toolkit.archetypes.h3"></a>
+ <span class="phrase"><a name="math_toolkit.archetypes.testing_the_distribution_concept"></a></span><a class="link" href="archetypes.html#math_toolkit.archetypes.testing_the_distribution_concept">Testing
+ the distribution concept</a>
+ </h3>
+<p>
+ The test program distribution_concept_check.cpp
+ is responsible for using <code class="computeroutput"><span class="identifier">DistributionConcept</span></code>
+ to verify that all the distributions in this library conform to the <a class="link" href="dist_concept.html" title="Conceptual Requirements for Distribution Types">Distribution
+ concept</a>.
+ </p>
+<p>
+ The class template <code class="computeroutput"><span class="identifier">DistributionConcept</span></code>
+ verifies the existence (but not proper function) of the non-member accessors
+ required by the <a class="link" href="dist_concept.html" title="Conceptual Requirements for Distribution Types">Distribution concept</a>.
+ These are checked by calls like
+ </p>
+<p>
+ v = pdf(dist, x); // (Result v is ignored).
+ </p>
+<p>
+ And in addition, those that accept two arguments do the right thing when the
+ arguments are of different types (the result type is always the same as the
+ distribution's value_type). (This is implemented by some additional forwarding-functions
+ in derived_accessors.hpp, so that there is no need for any code changes. Likewise
+ boilerplate versions of the hazard/chf/coefficient_of_variation functions are
+ implemented in there too.)
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="dist_concept.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../using_udt.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../policy.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/asin.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/asin.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>asin</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+<link rel="prev" href="complex_implementation.html" title="Implementation and Accuracy">
+<link rel="next" href="acos.html" title="acos">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="complex_implementation.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acos.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_asin">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.asin"></a><a class="link" href="asin.html" title="asin">asin</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.asin.h0"></a>
+ <span class="phrase"><a name="math_toolkit.asin.header"></a></span><a class="link" href="asin.html#math_toolkit.asin.header">Header:</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">asin</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<h5>
+<a name="math_toolkit.asin.h1"></a>
+ <span class="phrase"><a name="math_toolkit.asin.synopsis"></a></span><a class="link" href="asin.html#math_toolkit.asin.synopsis">Synopsis:</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">asin</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ <span class="bold"><strong>Effects: </strong></span> returns the inverse sine of the
+ complex number z.
+ </p>
+<p>
+ <span class="bold"><strong>Formula: </strong></span> <span class="inlinemediaobject"><img src="../../../images/asin.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="complex_implementation.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acos.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/asinh.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/asinh.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>asinh</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+<link rel="prev" href="atan.html" title="atan">
+<link rel="next" href="acosh.html" title="acosh">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="atan.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acosh.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_asinh">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.asinh"></a><a class="link" href="asinh.html" title="asinh">asinh</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.asinh.h0"></a>
+ <span class="phrase"><a name="math_toolkit.asinh.header"></a></span><a class="link" href="asinh.html#math_toolkit.asinh.header">Header:</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">asinh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<h5>
+<a name="math_toolkit.asinh.h1"></a>
+ <span class="phrase"><a name="math_toolkit.asinh.synopsis"></a></span><a class="link" href="asinh.html#math_toolkit.asinh.synopsis">Synopsis:</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">asinh</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ <span class="bold"><strong>Effects: </strong></span> returns the inverse hyperbolic sine
+ of the complex number z.
+ </p>
+<p>
+ <span class="bold"><strong>Formula: </strong></span> <span class="inlinemediaobject"><img src="../../../images/asinh.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="atan.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acosh.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/atan.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/atan.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>atan</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+<link rel="prev" href="acos.html" title="acos">
+<link rel="next" href="asinh.html" title="asinh">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="acos.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="asinh.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_atan">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.atan"></a><a class="link" href="atan.html" title="atan">atan</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.atan.h0"></a>
+ <span class="phrase"><a name="math_toolkit.atan.header"></a></span><a class="link" href="atan.html#math_toolkit.atan.header">Header:</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">atan</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<h5>
+<a name="math_toolkit.atan.h1"></a>
+ <span class="phrase"><a name="math_toolkit.atan.synopsis"></a></span><a class="link" href="atan.html#math_toolkit.atan.synopsis">Synopsis:</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">atan</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ <span class="bold"><strong>Effects: </strong></span> returns the inverse tangent of the
+ complex number z.
+ </p>
+<p>
+ <span class="bold"><strong>Formula: </strong></span> <span class="inlinemediaobject"><img src="../../../images/atan.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="acos.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="asinh.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/atanh.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/atanh.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>atanh</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+<link rel="prev" href="acosh.html" title="acosh">
+<link rel="next" href="complex_history.html" title="History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="acosh.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="complex_history.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_atanh">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.atanh"></a><a class="link" href="atanh.html" title="atanh">atanh</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.atanh.h0"></a>
+ <span class="phrase"><a name="math_toolkit.atanh.header"></a></span><a class="link" href="atanh.html#math_toolkit.atanh.header">Header:</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">atanh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<h5>
+<a name="math_toolkit.atanh.h1"></a>
+ <span class="phrase"><a name="math_toolkit.atanh.synopsis"></a></span><a class="link" href="atanh.html#math_toolkit.atanh.synopsis">Synopsis:</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">atanh</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ <span class="bold"><strong>Effects: </strong></span> returns the inverse hyperbolic tangent
+ of the complex number z.
+ </p>
+<p>
+ <span class="bold"><strong>Formula: </strong></span> <span class="inlinemediaobject"><img src="../../../images/atanh.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="acosh.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="complex_history.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/bessel.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/bessel.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Bessel Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="sf_poly/sph_harm.html" title="Spherical Harmonics">
+<link rel="next" href="bessel/bessel_over.html" title="Bessel Function Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sf_poly/sph_harm.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="bessel/bessel_over.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_bessel">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.bessel"></a><a class="link" href="bessel.html" title="Bessel Functions">Bessel Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Bessel Function Overview</span></dt>
+<dt><span class="section"><a href="bessel/bessel_first.html">Bessel Functions of
+ the First and Second Kinds</a></span></dt>
+<dt><span class="section"><a href="bessel/bessel_root.html">Finding Zeros of Bessel
+ Functions of the First and Second Kinds</a></span></dt>
+<dt><span class="section"><a href="bessel/mbessel.html">Modified Bessel Functions
+ of the First and Second Kinds</a></span></dt>
+<dt><span class="section"><a href="bessel/sph_bessel.html">Spherical Bessel Functions
+ of the First and Second Kinds</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sf_poly/sph_harm.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="bessel/bessel_over.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/bessel/bessel_first.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/bessel/bessel_first.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,688 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Bessel Functions of the First and Second Kinds</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../bessel.html" title="Bessel Functions">
+<link rel="prev" href="bessel_over.html" title="Bessel Function Overview">
+<link rel="next" href="bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="bessel_over.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="bessel_root.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_bessel_bessel_first">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.bessel.bessel_first"></a><a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">Bessel Functions of
+ the First and Second Kinds</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.bessel.bessel_first.h0"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_first.synopsis"></a></span><a class="link" href="bessel_first.html#math_toolkit.bessel.bessel_first.synopsis">Synopsis</a>
+ </h5>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">bessel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_bessel_j</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_bessel_j</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_neumann</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_neumann</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<h5>
+<a name="math_toolkit.bessel.bessel_first.h1"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_first.description"></a></span><a class="link" href="bessel_first.html#math_toolkit.bessel.bessel_first.description">Description</a>
+ </h5>
+<p>
+ The functions <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a> return
+ the result of the Bessel functions of the first and second kinds respectively:
+ </p>
+<p>
+ cyl_bessel_j(v, x) = J<sub>v</sub>(x)
+ </p>
+<p>
+ cyl_neumann(v, x) = Y<sub>v</sub>(x) = N<sub>v</sub>(x)
+ </p>
+<p>
+ where:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel2.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel3.png"></span>
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The functions return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ whenever the result is undefined or complex. For <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ this occurs when <code class="computeroutput"><span class="identifier">x</span> <span class="special"><</span>
+ <span class="number">0</span></code> and v is not an integer, or when
+ <code class="computeroutput"><span class="identifier">x</span> <span class="special">==</span>
+ <span class="number">0</span></code> and <code class="computeroutput"><span class="identifier">v</span>
+ <span class="special">!=</span> <span class="number">0</span></code>.
+ For <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a> this
+ occurs when <code class="computeroutput"><span class="identifier">x</span> <span class="special"><=</span>
+ <span class="number">0</span></code>.
+ </p>
+<p>
+ The following graph illustrates the cyclic nature of J<sub>v</sub>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/cyl_bessel_j.png" align="middle"></span>
+ </p>
+<p>
+ The following graph shows the behaviour of Y<sub>v</sub>: this is also cyclic for large
+ <span class="emphasis"><em>x</em></span>, but tends to -∞   for small <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/cyl_neumann.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.bessel.bessel_first.h2"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_first.testing"></a></span><a class="link" href="bessel_first.html#math_toolkit.bessel.bessel_first.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of test values: spot values calculated using functions.wolfram.com,
+ and a much larger set of tests computed using a simplified version of this
+ implementation (with all the special case handling removed).
+ </p>
+<h5>
+<a name="math_toolkit.bessel.bessel_first.h3"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_first.accuracy"></a></span><a class="link" href="bessel_first.html#math_toolkit.bessel.bessel_first.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following tables show how the accuracy of these functions varies on various
+ platforms, along with comparisons to the GSL-1.9
+ and Cephes libraries.
+ Note that the cyclic nature of these functions means that they have an infinite
+ number of irrational roots: in general these functions have arbitrarily large
+ <span class="emphasis"><em>relative</em></span> errors when the arguments are sufficiently
+ close to a root. Of course the absolute error in such cases is always small.
+ Note that only results for the widest floating-point type on the system are
+ given as narrower types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>. All values are relative errors in units of epsilon.
+ </p>
+<div class="table">
+<a name="math_toolkit.bessel.bessel_first.errors_rates_in_cyl_bessel_j"></a><p class="title"><b>Table 3.21. Errors Rates in cyl_bessel_j</b></p>
+<div class="table-contents"><table class="table" summary="Errors Rates in cyl_bessel_j">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ J<sub>0</sub>   and J<sub>1</sub>
+ </p>
+ </th>
+<th>
+ <p>
+ J<sub>v</sub>
+ </p>
+ </th>
+<th>
+ <p>
+ J<sub>v</sub>   (large values of x > 1000)
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 / Visual C++ 8.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.5 Mean=1.1
+ </p>
+ <p>
+ GSL Peak=6.6
+ </p>
+ <p>
+ Cephes Peak=2.5
+ Mean=1.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=11 Mean=2.2
+ </p>
+ <p>
+ GSL Peak=11
+ </p>
+ <p>
+ Cephes Peak=17
+ Mean=2.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=59 Mean=10
+ </p>
+ <p>
+ GSL Peak=6x10<sup>11</sup>
+ </p>
+ <p>
+ Cephes Peak=2x10<sup>5</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64 / G++ 3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=7 Mean=3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=117 Mean=10
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2x10<sup>4</sup>   Mean=6x10<sup>3</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux AMD64 / G++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=7 Mean=3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=400 Mean=40
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2x10<sup>4</sup>   Mean=1x10<sup>4</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HP-UX / HP aCC 6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=14 Mean=6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=29 Mean=3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2700 Mean=450
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.bessel.bessel_first.errors_rates_in_cyl_neumann"></a><p class="title"><b>Table 3.22. Errors Rates in cyl_neumann</b></p>
+<div class="table-contents"><table class="table" summary="Errors Rates in cyl_neumann">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Y<sub>0</sub>   and Y<sub>1</sub>
+ </p>
+ </th>
+<th>
+ <p>
+ Y<sub>n</sub> (integer orders)
+ </p>
+ </th>
+<th>
+ <p>
+ Y<sub>v</sub> (fractional orders)
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 / Visual C++ 8.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.7 Mean=1.7
+ </p>
+ <p>
+ GSL Peak=34 Mean=9
+ </p>
+ <p>
+ Cephes Peak=330
+ Mean=54
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=117 Mean=10
+ </p>
+ <p>
+ GSL Peak=500 Mean=54
+ </p>
+ <p>
+ Cephes Peak=923
+ Mean=83
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=800 Mean=40
+ </p>
+ <p>
+ GSL Peak=1.4x10<sup>6</sup>   Mean=7x10<sup>4</sup>  
+ </p>
+ <p>
+ Cephes Peak=+INF
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64 / G++ 3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=470 Mean=56
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=843 Mean=51
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=741 Mean=51
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux AMD64 / G++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1300 Mean=424
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2x10<sup>4</sup>   Mean=8x10<sup>3</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1x10<sup>5</sup>   Mean=6x10<sup>3</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HP-UX / HP aCC 6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=180 Mean=63
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=340 Mean=150
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2x10<sup>4</sup>   Mean=1200
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ Note that for large <span class="emphasis"><em>x</em></span> these functions are largely dependent
+ on the accuracy of the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">sin</span></code> and
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cos</span></code> functions.
+ </p>
+<p>
+ Comparison to GSL and Cephes
+ is interesting: both Cephes
+ and this library optimise the integer order case - leading to identical results
+ - simply using the general case is for the most part slightly more accurate
+ though, as noted by the better accuracy of GSL in the integer argument cases.
+ This implementation tends to perform much better when the arguments become
+ large, Cephes in particular
+ produces some remarkably inaccurate results with some of the test data (no
+ significant figures correct), and even GSL performs badly with some inputs
+ to J<sub>v</sub>. Note that by way of double-checking these results, the worst performing
+ Cephes and GSL cases were
+ recomputed using functions.wolfram.com,
+ and the result checked against our test data: no errors in the test data
+ were found.
+ </p>
+<h5>
+<a name="math_toolkit.bessel.bessel_first.h4"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_first.implementation"></a></span><a class="link" href="bessel_first.html#math_toolkit.bessel.bessel_first.implementation">Implementation</a>
+ </h5>
+<p>
+ The implementation is mostly about filtering off various special cases:
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is negative, then the order <span class="emphasis"><em>v</em></span>
+ must be an integer or the result is a domain error. If the order is an integer
+ then the function is odd for odd orders and even for even orders, so we reflect
+ to <span class="emphasis"><em>x > 0</em></span>.
+ </p>
+<p>
+ When the order <span class="emphasis"><em>v</em></span> is negative then the reflection formulae
+ can be used to move to <span class="emphasis"><em>v > 0</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel9.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel10.png"></span>
+ </p>
+<p>
+ Note that if the order is an integer, then these formulae reduce to:
+ </p>
+<p>
+ J<sub>-n</sub> = (-1)<sup>n</sup>J<sub>n</sub>
+ </p>
+<p>
+ Y<sub>-n</sub> = (-1)<sup>n</sup>Y<sub>n</sub>
+ </p>
+<p>
+ However, in general, a negative order implies that we will need to compute
+ both J and Y.
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is large compared to the order <span class="emphasis"><em>v</em></span>
+ then the asymptotic expansions for large <span class="emphasis"><em>x</em></span> in M. Abramowitz
+ and I.A. Stegun, <span class="emphasis"><em>Handbook of Mathematical Functions</em></span>
+ 9.2.19 are used (these were found to be more reliable than those in A&S
+ 9.2.5).
+ </p>
+<p>
+ When the order <span class="emphasis"><em>v</em></span> is an integer the method first relates
+ the result to J<sub>0</sub>, J<sub>1</sub>, Y<sub>0</sub>   and Y<sub>1</sub>   using either forwards or backwards recurrence
+ (Miller's algorithm) depending upon which is stable. The values for J<sub>0</sub>, J<sub>1</sub>,
+ Y<sub>0</sub>   and Y<sub>1</sub>   are calculated using the rational minimax approximations on root-bracketing
+ intervals for small <span class="emphasis"><em>|x|</em></span> and Hankel asymptotic expansion
+ for large <span class="emphasis"><em>|x|</em></span>. The coefficients are from:
+ </p>
+<p>
+ W.J. Cody, <span class="emphasis"><em>ALGORITHM 715: SPECFUN - A Portable FORTRAN Package
+ of Special Function Routines and Test Drivers</em></span>, ACM Transactions
+ on Mathematical Software, vol 19, 22 (1993).
+ </p>
+<p>
+ and
+ </p>
+<p>
+ J.F. Hart et al, <span class="emphasis"><em>Computer Approximations</em></span>, John Wiley
+ & Sons, New York, 1968.
+ </p>
+<p>
+ These approximations are accurate to around 19 decimal digits: therefore
+ these methods are not used when type T has more than 64 binary digits.
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is smaller than machine epsilon then the following
+ approximations for Y<sub>0</sub>(x), Y<sub>1</sub>(x), Y<sub>2</sub>(x) and Y<sub>n</sub>(x) can be used (see: http://functions.wolfram.com/03.03.06.0037.01,
+ http://functions.wolfram.com/03.03.06.0038.01,
+ http://functions.wolfram.com/03.03.06.0039.01
+ and http://functions.wolfram.com/03.03.06.0040.01):
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel_y0_small_z.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel_y1_small_z.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel_y2_small_z.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel_yn_small_z.png"></span>
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is small compared to <span class="emphasis"><em>v</em></span> and
+ <span class="emphasis"><em>v</em></span> is not an integer, then the following series approximation
+ can be used for Y<sub>v</sub>(x), this is also an area where other approximations are
+ often too slow to converge to be used (see http://functions.wolfram.com/03.03.06.0034.01):
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel_yv_small_z.png"></span>
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is small compared to <span class="emphasis"><em>v</em></span>,
+ J<sub>v</sub>x   is best computed directly from the series:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel2.png"></span>
+ </p>
+<p>
+ In the general case we compute J<sub>v</sub>   and Y<sub>v</sub>   simultaneously.
+ </p>
+<p>
+ To get the initial values, let μ   = ν - floor(ν + 1/2), then μ   is the fractional part
+ of ν   such that |μ| <= 1/2 (we need this for convergence later). The idea
+ is to calculate J<sub>μ</sub>(x), J<sub>μ+1</sub>(x), Y<sub>μ</sub>(x), Y<sub>μ+1</sub>(x) and use them to obtain J<sub>ν</sub>(x), Y<sub>ν</sub>(x).
+ </p>
+<p>
+ The algorithm is called Steed's method, which needs two continued fractions
+ as well as the Wronskian:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel8.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel11.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel12.png"></span>
+ </p>
+<p>
+ See: F.S. Acton, <span class="emphasis"><em>Numerical Methods that Work</em></span>, The Mathematical
+ Association of America, Washington, 1997.
+ </p>
+<p>
+ The continued fractions are computed using the modified Lentz's method (W.J.
+ Lentz, <span class="emphasis"><em>Generating Bessel functions in Mie scattering calculations
+ using continued fractions</em></span>, Applied Optics, vol 15, 668 (1976)).
+ Their convergence rates depend on <span class="emphasis"><em>x</em></span>, therefore we need
+ different strategies for large <span class="emphasis"><em>x</em></span> and small <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ <span class="emphasis"><em>x > v</em></span>, CF1 needs O(<span class="emphasis"><em>x</em></span>) iterations
+ to converge, CF2 converges rapidly
+ </p>
+<p>
+ <span class="emphasis"><em>x <= v</em></span>, CF1 converges rapidly, CF2 fails to converge
+ when <span class="emphasis"><em>x</em></span> <code class="literal">-></code> 0
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is large (<span class="emphasis"><em>x</em></span> > 2), both
+ continued fractions converge (CF1 may be slow for really large <span class="emphasis"><em>x</em></span>).
+ J<sub>μ</sub>, J<sub>μ+1</sub>, Y<sub>μ</sub>, Y<sub>μ+1</sub> can be calculated by
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel13.png"></span>
+ </p>
+<p>
+ where
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel14.png"></span>
+ </p>
+<p>
+ J<sub>ν</sub> and Y<sub>μ</sub> are then calculated using backward (Miller's algorithm) and forward
+ recurrence respectively.
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is small (<span class="emphasis"><em>x</em></span> <= 2), CF2
+ convergence may fail (but CF1 works very well). The solution here is Temme's
+ series:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel15.png"></span>
+ </p>
+<p>
+ where
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel16.png"></span>
+ </p>
+<p>
+ g<sub>k</sub>   and h<sub>k</sub>  
+are also computed by recursions (involving gamma functions), but
+ the formulas are a little complicated, readers are refered to N.M. Temme,
+ <span class="emphasis"><em>On the numerical evaluation of the ordinary Bessel function of
+ the second kind</em></span>, Journal of Computational Physics, vol 21, 343
+ (1976). Note Temme's series converge only for |μ| <= 1/2.
+ </p>
+<p>
+ As the previous case, Y<sub>ν</sub>   is calculated from the forward recurrence, so is Y<sub>ν+1</sub>.
+ With these two values and f<sub>ν</sub>, the Wronskian yields J<sub>ν</sub>(x) directly without backward
+ recurrence.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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_over.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="bessel_root.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/bessel/bessel_over.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/bessel/bessel_over.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,202 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Bessel Function Overview</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../bessel.html" title="Bessel Functions">
+<link rel="prev" href="../bessel.html" title="Bessel Functions">
+<link rel="next" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../bessel.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="bessel_first.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_bessel_bessel_over">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.bessel.bessel_over"></a><a class="link" href="bessel_over.html" title="Bessel Function Overview">Bessel Function Overview</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.bessel.bessel_over.h0"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_over.ordinary_bessel_functions"></a></span><a class="link" href="bessel_over.html#math_toolkit.bessel.bessel_over.ordinary_bessel_functions">Ordinary
+ Bessel Functions</a>
+ </h5>
+<p>
+ Bessel Functions are solutions to Bessel's ordinary differential equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel1.png"></span>
+ </p>
+<p>
+ where ν   is the <span class="emphasis"><em>order</em></span> of the equation, and may be an arbitrary
+ real or complex number, although integer orders are the most common occurrence.
+ </p>
+<p>
+ This library supports either integer or real orders.
+ </p>
+<p>
+ Since this is a second order differential equation, there must be two linearly
+ independent solutions, the first of these is denoted J<sub>v</sub>  
+and known as a Bessel
+ function of the first kind:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel2.png"></span>
+ </p>
+<p>
+ This function is implemented in this library as <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>.
+ </p>
+<p>
+ The second solution is denoted either Y<sub>v</sub>   or N<sub>v</sub>  
+and is known as either a Bessel
+ Function of the second kind, or as a Neumann function:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel3.png"></span>
+ </p>
+<p>
+ This function is implemented in this library as <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>.
+ </p>
+<p>
+ The Bessel functions satisfy the recurrence relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel4.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel5.png"></span>
+ </p>
+<p>
+ Have the derivatives:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel6.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel7.png"></span>
+ </p>
+<p>
+ Have the Wronskian relation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel8.png"></span>
+ </p>
+<p>
+ and the reflection formulae:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel9.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/bessel10.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.bessel.bessel_over.h1"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_over.modified_bessel_functions"></a></span><a class="link" href="bessel_over.html#math_toolkit.bessel.bessel_over.modified_bessel_functions">Modified
+ Bessel Functions</a>
+ </h5>
+<p>
+ The Bessel functions are valid for complex argument <span class="emphasis"><em>x</em></span>,
+ and an important special case is the situation where <span class="emphasis"><em>x</em></span>
+ is purely imaginary: giving a real valued result. In this case the functions
+ are the two linearly independent solutions to the modified Bessel equation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel1.png"></span>
+ </p>
+<p>
+ The solutions are known as the modified Bessel functions of the first and
+ second kind (or occasionally as the hyperbolic Bessel functions of the first
+ and second kind). They are denoted I<sub>v</sub>   and K<sub>v</sub>  
+respectively:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel2.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel3.png"></span>
+ </p>
+<p>
+ These functions are implemented in this library as <a class="link" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a>
+ and <a class="link" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_k</a> respectively.
+ </p>
+<p>
+ The modified Bessel functions satisfy the recurrence relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel4.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel5.png"></span>
+ </p>
+<p>
+ Have the derivatives:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel6.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel7.png"></span>
+ </p>
+<p>
+ Have the Wronskian relation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel8.png"></span>
+ </p>
+<p>
+ and the reflection formulae:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel9.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel10.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.bessel.bessel_over.h2"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_over.spherical_bessel_functions"></a></span><a class="link" href="bessel_over.html#math_toolkit.bessel.bessel_over.spherical_bessel_functions">Spherical
+ Bessel Functions</a>
+ </h5>
+<p>
+ When solving the Helmholtz equation in spherical coordinates by separation
+ of variables, the radial equation has the form:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/sbessel1.png"></span>
+ </p>
+<p>
+ The two linearly independent solutions to this equation are called the spherical
+ Bessel functions j<sub>n</sub>   and y<sub>n</sub>  , and are related to the ordinary Bessel functions
+ J<sub>n</sub>   and Y<sub>n</sub>   by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/sbessel2.png"></span>
+ </p>
+<p>
+ The spherical Bessel function of the second kind y<sub>n</sub>  
+is also known as the spherical
+ Neumann function n<sub>n</sub>.
+ </p>
+<p>
+ These functions are implemented in this library as <a class="link" href="sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">sph_bessel</a>
+ and <a class="link" href="sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">sph_neumann</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="bessel_first.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/bessel/bessel_root.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/bessel/bessel_root.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,754 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Finding Zeros of Bessel Functions of the First and Second Kinds</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../bessel.html" title="Bessel Functions">
+<link rel="prev" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">
+<link rel="next" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="bessel_first.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="mbessel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_bessel_bessel_root">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.bessel.bessel_root"></a><a class="link" href="bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds">Finding Zeros of Bessel
+ Functions of the First and Second Kinds</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.bessel.bessel_root.h0"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_root.synopsis"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.synopsis">Synopsis</a>
+ </h5>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">bessel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+<p>
+ Functions for obtaining both a single zero or root of the Bessel function,
+ and placing multiple zeros into a container like <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code>
+ by providing an output iterator.
+ </p>
+<p>
+ The signature of the single value functions are:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="identifier">v</span><span class="special">,</span> <span class="comment">// Floating-point value for Jv.</span>
+ <span class="keyword">int</span> <span class="identifier">m</span><span class="special">);</span> <span class="comment">// 1-based index of zero.</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">cyl_neumann_zero</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="identifier">v</span><span class="special">,</span> <span class="comment">// Floating-point value for Jv.</span>
+ <span class="keyword">int</span> <span class="identifier">m</span><span class="special">);</span> <span class="comment">// 1-based index of zero.</span>
+</pre>
+<p>
+ and for multiple zeros:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="identifier">OutputIterator</span> <span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="identifier">v</span><span class="special">,</span> <span class="comment">// Floating-point value for Jv.</span>
+ <span class="keyword">int</span> <span class="identifier">start_index</span><span class="special">,</span> <span class="comment">// 1-based index of first zero.</span>
+ <span class="keyword">unsigned</span> <span class="identifier">number_of_zeros</span><span class="special">,</span> <span class="comment">// How many zeros to generate.</span>
+ <span class="identifier">OutputIterator</span> <span class="identifier">out_it</span><span class="special">);</span> <span class="comment">// Destination for zeros.</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="identifier">OutputIterator</span> <span class="identifier">cyl_neumann_zero</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="identifier">v</span><span class="special">,</span> <span class="comment">// Floating-point value for Jv.</span>
+ <span class="keyword">int</span> <span class="identifier">start_index</span><span class="special">,</span> <span class="comment">// 1-based index of zero.</span>
+ <span class="keyword">unsigned</span> <span class="identifier">number_of_zeros</span><span class="special">,</span> <span class="comment">// How many zeros to generate</span>
+ <span class="identifier">OutputIterator</span> <span class="identifier">out_it</span><span class="special">);</span> <span class="comment">// Destination for zeros.</span>
+</pre>
+<p>
+ There are also versions which allow control of the <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policies</a>
+ for error handling and precision.
+ </p>
+<pre class="programlisting"> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">T</span> <span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="identifier">v</span><span class="special">,</span> <span class="comment">// Floating-point value for Jv.</span>
+ <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="comment">// 1-based index of zero.</span>
+ <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span> <span class="comment">// Policy to use.</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">T</span> <span class="identifier">cyl_neumann_zero</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="identifier">v</span><span class="special">,</span> <span class="comment">// Floating-point value for Jv.</span>
+ <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="comment">// 1-based index of zero.</span>
+ <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span> <span class="comment">// Policy to use.</span>
+
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="identifier">OutputIterator</span> <span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="identifier">v</span><span class="special">,</span> <span class="comment">// Floating-point value for Jv.</span>
+ <span class="keyword">int</span> <span class="identifier">start_index</span><span class="special">,</span> <span class="comment">// 1-based index of first zero.</span>
+ <span class="keyword">unsigned</span> <span class="identifier">number_of_zeros</span><span class="special">,</span> <span class="comment">// How many zeros to generate.</span>
+ <span class="identifier">OutputIterator</span> <span class="identifier">out_it</span><span class="special">,</span> <span class="comment">// Destination for zeros.</span>
+ <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span> <span class="comment">// Policy to use.</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="identifier">OutputIterator</span> <span class="identifier">cyl_neumann_zero</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="identifier">v</span><span class="special">,</span> <span class="comment">// Floating-point value for Jv.</span>
+ <span class="keyword">int</span> <span class="identifier">start_index</span><span class="special">,</span> <span class="comment">// 1-based index of zero.</span>
+ <span class="keyword">unsigned</span> <span class="identifier">number_of_zeros</span><span class="special">,</span> <span class="comment">// How many zeros to generate.</span>
+ <span class="identifier">OutputIterator</span> <span class="identifier">out_it</span><span class="special">,</span> <span class="comment">// Destination for zeros.</span>
+ <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span> <span class="comment">// Policy to use.</span>
+</pre>
+<h5>
+<a name="math_toolkit.bessel.bessel_root.h1"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_root.description"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.description">Description</a>
+ </h5>
+<p>
+ Every real order ν cylindrical Bessel and Neumann functions have an infinite
+ number of zeros on the positive real axis. The real zeros on the positive
+ real axis can be found by solving for the roots of
+ </p>
+<p>
+   <span class="emphasis"><em>J<sub>ν</sub>(j<sub>ν, m</sub>) = 0</em></span>
+ </p>
+<p>
+   <span class="emphasis"><em>Y<sub>ν</sub>(y<sub>ν, m</sub>) = 0</em></span>
+ </p>
+<p>
+ Here, <span class="emphasis"><em>j<sub>ν, m</sub></em></span> represents the <span class="emphasis"><em>m<sup>th</sup></em></span> root
+ of the cylindrical Bessel function of order <span class="emphasis"><em>ν</em></span>, and <span class="emphasis"><em>y<sub>ν,
+ m</sub></em></span> represents the <span class="emphasis"><em>m<sup>th</sup></em></span> root of the cylindrical
+ Neumann function of order <span class="emphasis"><em>ν</em></span>.
+ </p>
+<p>
+ The zeros or roots (values of <code class="computeroutput"><span class="identifier">x</span></code>
+ where the function crosses the horizontal <code class="computeroutput"><span class="identifier">y</span>
+ <span class="special">=</span> <span class="number">0</span></code>
+ axis) of the Bessel and Neumann functions are computed by two functions,
+ <code class="computeroutput"><span class="identifier">cyl_bessel_j_zero</span></code> and <code class="computeroutput"><span class="identifier">cyl_neumann_zero</span></code>.
+ </p>
+<p>
+ In each case the index or rank of the zero returned is 1-based, which is
+ to say:
+ </p>
+<pre class="programlisting"><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ returns the first zero of Bessel J.
+ </p>
+<p>
+ Passing an <code class="computeroutput"><span class="identifier">start_index</span> <span class="special"><=</span>
+ <span class="number">0</span></code> results in a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+ being raised.
+ </p>
+<p>
+ For certain parameters, however, the zero'th root is defined and it has a
+ value of zero. For example, the zero'th root of <code class="computeroutput"><span class="identifier">J</span><span class="special">[</span><span class="identifier">sub</span> <span class="identifier">v</span><span class="special">](</span><span class="identifier">x</span><span class="special">)</span></code>
+ is defined and it has a value of zero for all values of <code class="computeroutput"><span class="identifier">v</span>
+ <span class="special">></span> <span class="number">0</span></code>
+ and for negative integer values of <code class="computeroutput"><span class="identifier">v</span>
+ <span class="special">=</span> <span class="special">-</span><span class="identifier">n</span></code>. Similar cases are described in the implementation
+ details below.
+ </p>
+<p>
+ The order <code class="computeroutput"><span class="identifier">v</span></code> of <code class="computeroutput"><span class="identifier">J</span></code> can be positive, negative and zero for
+ the <code class="computeroutput"><span class="identifier">cyl_bessel_j</span></code> and <code class="computeroutput"><span class="identifier">cyl_neumann</span></code> functions, but not infinite
+ nor NaN.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/bessel_j_zeros.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/neumann_y_zeros.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.bessel.bessel_root.h2"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_root.examples_of_finding_bessel_and_n"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.examples_of_finding_bessel_and_n">Examples
+ of finding Bessel and Neumann zeros</a>
+ </h5>
+<p>
+ This example demonstrates calculating zeros of the Bessel and Neumann functions.
+ It also shows how Boost.Math and Boost.Multiprecision can be combined to
+ provide a many decimal digit precision. For 50 decimal digit precision we
+ need to include
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ and a <code class="computeroutput"><span class="keyword">typedef</span></code> for <code class="computeroutput"><span class="identifier">float_type</span></code> may be convenient (allowing
+ a quick switch to re-compute at built-in <code class="computeroutput"><span class="keyword">double</span></code>
+ or other precision)
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span> <span class="identifier">float_type</span><span class="special">;</span>
+</pre>
+<p>
+ To use the functions for finding zeros of the functions we need
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">bessel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ This file includes the forward declaration signatures for the zero-finding
+ functions:
+ </p>
+<pre class="programlisting"><span class="comment">// #include <boost/math/special_functions/math_fwd.hpp></span>
+</pre>
+<p>
+ but more details are in the full documentation, for example at <a href="http://www.boost.org/doc/libs/1_53_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html" target="_top">Boost.Math
+ Bessel functions</a>.
+ </p>
+<p>
+ This example shows obtaining both a single zero of the Bessel function, and
+ then placing multiple zeros into a container like <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code>
+ by providing an iterator.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ It is always wise to place code using Boost.Math inside try'n'catch blocks;
+ this will ensure that helpful error messages are shown when exceptional
+ conditions arise.
+ </p></td></tr>
+</table></div>
+<p>
+ First, evaluate a single Bessel zero.
+ </p>
+<p>
+ The precision is controlled by the float-point type of template parameter
+ <code class="computeroutput"><span class="identifier">T</span></code> of <code class="computeroutput"><span class="identifier">v</span></code>
+ so this example has <code class="computeroutput"><span class="keyword">double</span></code> precision,
+ at least 15 but up to 17 decimal digits (for the common 64-bit double).
+ </p>
+<pre class="programlisting"><span class="comment">// double root = boost::math::cyl_bessel_j_zero(0.0, 1);</span>
+<span class="comment">// // Displaying with default precision of 6 decimal digits:</span>
+<span class="comment">// std::cout << "boost::math::cyl_bessel_j_zero(0.0, 1) " << root << std::endl; // 2.40483</span>
+<span class="comment">// // And with all the guaranteed (15) digits:</span>
+<span class="comment">// std::cout.precision(std::numeric_limits<double>::digits10);</span>
+<span class="comment">// std::cout << "boost::math::cyl_bessel_j_zero(0.0, 1) " << root << std::endl; // 2.40482555769577</span>
+</pre>
+<p>
+ But note that because the parameter <code class="computeroutput"><span class="identifier">v</span></code>
+ controls the precision of the result, <code class="computeroutput"><span class="identifier">v</span></code>
+ <span class="bold"><strong>must be a floating-point type</strong></span>. So if you
+ provide an integer type, say 0, rather than 0.0, then it will fail to compile
+ thus:
+ </p>
+<pre class="programlisting"><span class="identifier">root</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ with this error message
+ </p>
+<pre class="programlisting"><span class="identifier">error</span> <span class="identifier">C2338</span><span class="special">:</span> <span class="identifier">Order</span> <span class="identifier">must</span> <span class="identifier">be</span> <span class="identifier">a</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span><span class="special">.</span>
+</pre>
+<p>
+ Optionally, we can use a policy to ignore errors, C-style, returning some
+ value, perhaps infinity or NaN, or the best that can be done. (See <a class="link" href="../pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">user error handling</a>).
+ </p>
+<p>
+ To create a (possibly unwise!) policy <code class="computeroutput"><span class="identifier">ignore_all_policy</span></code>
+ that ignores all errors:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">ignore_error</span><span class="special">>,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">ignore_error</span><span class="special">>,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">underflow_error</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">ignore_error</span><span class="special">>,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">denorm_error</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">ignore_error</span><span class="special">>,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">ignore_error</span><span class="special">>,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">ignore_error</span><span class="special">></span>
+ <span class="special">></span> <span class="identifier">ignore_all_policy</span><span class="special">;</span>
+</pre>
+<p>
+ Examples of use of this <code class="computeroutput"><span class="identifier">ignore_all_policy</span></code>
+ are
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">inf</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">();</span>
+<span class="keyword">double</span> <span class="identifier">nan</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
+
+<span class="keyword">double</span> <span class="identifier">dodgy_root</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(-</span><span class="number">1.0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">ignore_all_policy</span><span class="special">());</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"boost::math::cyl_bessel_j_zero(-1.0, 1) "</span> <span class="special"><<</span> <span class="identifier">dodgy_root</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1.#QNAN</span>
+<span class="keyword">double</span> <span class="identifier">inf_root</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">inf</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">ignore_all_policy</span><span class="special">());</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"boost::math::cyl_bessel_j_zero(inf, 1) "</span> <span class="special"><<</span> <span class="identifier">inf_root</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1.#QNAN</span>
+<span class="keyword">double</span> <span class="identifier">nan_root</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">nan</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">ignore_all_policy</span><span class="special">());</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"boost::math::cyl_bessel_j_zero(nan, 1) "</span> <span class="special"><<</span> <span class="identifier">nan_root</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1.#QNAN</span>
+</pre>
+<p>
+ Another version of <code class="computeroutput"><span class="identifier">cyl_bessel_j_zero</span></code>
+ allows calculation of multiple zeros with one call, placing the results in
+ a container, often <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code>. For example, generate and display
+ the first five <code class="computeroutput"><span class="keyword">double</span></code> roots
+ of J<sub>v</sub> for integral order 2, as column <span class="emphasis"><em>J<sub>2</sub>(x)</em></span> in table
+ 1 of <a href="http://mathworld.wolfram.com/BesselFunctionZeros.html" target="_top">Wolfram
+ Bessel Function Zeros</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">n_roots</span> <span class="special">=</span> <span class="number">5U</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">roots</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="number">2.0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">n_roots</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">roots</span><span class="special">));</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span><span class="identifier">roots</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span>
+ <span class="identifier">roots</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream_iterator</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">,</span> <span class="string">"\n"</span><span class="special">));</span>
+</pre>
+<p>
+ Or we can use Boost.Multiprecision to generate 50 decimal digit roots of
+ <span class="emphasis"><em>J<sub>v</sub></em></span> for non-integral order <code class="computeroutput"><span class="identifier">v</span><span class="special">=</span> <span class="number">71</span><span class="special">/</span><span class="number">19</span> <span class="special">==</span> <span class="number">3.736842</span></code>,
+ expressed as an exact-integer fraction to generate the most accurate value
+ possible for all floating-point types.
+ </p>
+<p>
+ We set the precision of the output stream, and show trailing zeros to display
+ a fixed 50 decimal digits.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">float_type</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">);</span> <span class="comment">// 50 decimal digits.</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpoint</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Show trailing zeros.</span>
+
+<span class="identifier">float_type</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">float_type</span><span class="special">(</span><span class="number">71</span><span class="special">)</span> <span class="special">/</span> <span class="number">19</span><span class="special">;</span>
+<span class="identifier">float_type</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span> <span class="comment">// 1st root.</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"x = "</span> <span class="special"><<</span> <span class="identifier">x</span> <span class="special"><<</span> <span class="string">", r = "</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">r</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="number">20U</span><span class="special">);</span> <span class="comment">// 20th root.</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"x = "</span> <span class="special"><<</span> <span class="identifier">x</span> <span class="special"><<</span> <span class="string">", r = "</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">float_type</span><span class="special">></span> <span class="identifier">zeros</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">zeros</span><span class="special">));</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"cyl_bessel_j_zeros"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Print the roots to the output stream.</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span><span class="identifier">zeros</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">zeros</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream_iterator</span><span class="special"><</span><span class="identifier">float_type</span><span class="special">>(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">,</span> <span class="string">"\n"</span><span class="special">));</span>
+</pre>
+<h6>
+<a name="math_toolkit.bessel.bessel_root.h3"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_root.using_output_iterator_to_sum_zer"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.using_output_iterator_to_sum_zer">Using
+ Output Iterator to sum zeros of Bessel Functions</a>
+ </h6>
+<p>
+ This example demonstrates summing zeros of the Bessel functions. To use the
+ functions for finding zeros of the functions we need
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">bessel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ We use the <code class="computeroutput"><span class="identifier">cyl_bessel_j_zero</span></code>
+ output iterator parameter <code class="computeroutput"><span class="identifier">out_it</span></code>
+ to create a sum of <span class="emphasis"><em>1/zeros<sup>2</sup></em></span> by defining a custom output
+ iterator:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">output_summation_iterator</span>
+<span class="special">{</span>
+ <span class="identifier">output_summation_iterator</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">p_sum</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{}</span>
+ <span class="identifier">output_summation_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">*()</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span>
+ <span class="identifier">output_summation_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++()</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span>
+ <span class="identifier">output_summation_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">)</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span>
+ <span class="identifier">output_summation_iterator</span><span class="special">&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">*</span><span class="identifier">p_sum</span> <span class="special">+=</span> <span class="number">1.</span><span class="special">/</span> <span class="special">(</span><span class="identifier">val</span> <span class="special">*</span> <span class="identifier">val</span><span class="special">);</span> <span class="comment">// Summing 1/zero^2.</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p_sum</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The sum is calculated for many values, converging on the analytical exact
+ value of <code class="computeroutput"><span class="number">1</span><span class="special">/</span><span class="number">8</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">nu</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+<span class="identifier">output_summation_iterator</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">it</span><span class="special">(&</span><span class="identifier">sum</span><span class="special">);</span> <span class="comment">// sum of 1/zeros^2</span>
+<span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">nu</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">10000</span><span class="special">,</span> <span class="identifier">it</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">s</span> <span class="special">=</span> <span class="number">1</span><span class="special">/(</span><span class="number">4</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">nu</span> <span class="special">+</span> <span class="number">1</span><span class="special">));</span> <span class="comment">// 0.125 = 1/8 is exact analytical solution.</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">6</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"nu = "</span> <span class="special"><<</span> <span class="identifier">nu</span> <span class="special"><<</span> <span class="string">", sum = "</span> <span class="special"><<</span> <span class="identifier">sum</span>
+ <span class="special"><<</span> <span class="string">", exact = "</span> <span class="special"><<</span> <span class="identifier">s</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// nu = 1.00000, sum = 0.124990, exact = 0.125000</span>
+</pre>
+<h6>
+<a name="math_toolkit.bessel.bessel_root.h4"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_root.calculating_zeros_of_the_neumann"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.calculating_zeros_of_the_neumann">Calculating
+ zeros of the Neumann function.</a>
+ </h6>
+<p>
+ This example also shows how Boost.Math and Boost.Multiprecision can be combined
+ to provide a many decimal digit precision. For 50 decimal digit precision
+ we need to include
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ and a <code class="computeroutput"><span class="keyword">typedef</span></code> for <code class="computeroutput"><span class="identifier">float_type</span></code> may be convenient (allowing
+ a quick switch to re-compute at built-in <code class="computeroutput"><span class="keyword">double</span></code>
+ or other precision)
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span> <span class="identifier">float_type</span><span class="special">;</span>
+</pre>
+<p>
+ To use the functions for finding zeros of the <code class="computeroutput"><span class="identifier">cyl_neumann</span></code>
+ function we need:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">bessel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ The Neumann (Bessel Y) function zeros are evaluated very similarly:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_neumann_zero</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">zn</span> <span class="special">=</span> <span class="identifier">cyl_neumann_zero</span><span class="special">(</span><span class="number">2.</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"cyl_neumann_zero(2., 1) = "</span> <span class="special"><<</span> <span class="identifier">zn</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="identifier">nzeros</span><span class="special">(</span><span class="number">3</span><span class="special">);</span> <span class="comment">// Space for 3 zeros.</span>
+<span class="identifier">cyl_neumann_zero</span><span class="special"><</span><span class="keyword">float</span><span class="special">>(</span><span class="number">2.F</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">nzeros</span><span class="special">.</span><span class="identifier">size</span><span class="special">(),</span> <span class="identifier">nzeros</span><span class="special">.</span><span class="identifier">begin</span><span class="special">());</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"cyl_neumann_zero<float>(2.F, 1, "</span><span class="special">;</span>
+<span class="comment">// Print the zeros to the output stream.</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span><span class="identifier">nzeros</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">nzeros</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream_iterator</span><span class="special"><</span><span class="keyword">float</span><span class="special">>(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">,</span> <span class="string">", "</span><span class="special">));</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="string">"cyl_neumann_zero(static_cast<float_type>(220)/100, 1) = "</span>
+ <span class="special"><<</span> <span class="identifier">cyl_neumann_zero</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">float_type</span><span class="special">>(</span><span class="number">220</span><span class="special">)/</span><span class="number">100</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// 3.6154383428745996706772556069431792744372398748422</span>
+</pre>
+<h6>
+<a name="math_toolkit.bessel.bessel_root.h5"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_root.error_messages_from_bad_input"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.error_messages_from_bad_input">Error
+ messages from 'bad' input</a>
+ </h6>
+<p>
+ Another example demonstrates calculating zeros of the Bessel functions showing
+ the error messages from 'bad' input is handled by throwing exceptions.
+ </p>
+<p>
+ To use the functions for finding zeros of the functions we need:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">bessel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">airy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ It is always wise to place all code using Boost.Math inside try'n'catch
+ blocks; this will ensure that helpful error messages can be shown when
+ exceptional conditions arise.
+ </p></td></tr>
+</table></div>
+<p>
+ Examples below show messages from several 'bad' arguments that throw a <code class="computeroutput"><span class="identifier">domain_error</span></code> exception.
+ </p>
+<pre class="programlisting"><span class="keyword">try</span>
+<span class="special">{</span> <span class="comment">// Try a zero order v.</span>
+ <span class="keyword">float</span> <span class="identifier">dodgy_root</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="number">0.F</span><span class="special">,</span> <span class="number">0</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"boost::math::cyl_bessel_j_zero(0.F, 0) "</span> <span class="special"><<</span> <span class="identifier">dodgy_root</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Thrown exception Error in function boost::math::cyl_bessel_j_zero<double>(double, int):</span>
+ <span class="comment">// Requested the 0'th zero of J0, but the rank must be > 0 !</span>
+<span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">&</span> <span class="identifier">ex</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Thrown exception "</span> <span class="special"><<</span> <span class="identifier">ex</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The type shown in the error message is the type <span class="bold"><strong>after
+ promotion</strong></span>, using <a class="link" href="../pol_ref/precision_pol.html" title="Precision Policies">precision
+ policy</a> and <a class="link" href="../pol_ref/internal_promotion.html" title="Internal Floating-point Promotion Policies">internal
+ promotion policy</a>, from <code class="computeroutput"><span class="keyword">float</span></code>
+ to <code class="computeroutput"><span class="keyword">double</span></code> in this case.
+ </p></td></tr>
+</table></div>
+<p>
+ In this example the promotion goes:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Arguments are <code class="computeroutput"><span class="keyword">float</span></code> and
+ <code class="computeroutput"><span class="keyword">int</span></code>.
+ </li>
+<li class="listitem">
+ Treat <code class="computeroutput"><span class="keyword">int</span></code> "as if"
+ it were a <code class="computeroutput"><span class="keyword">double</span></code>, so arguments
+ are <code class="computeroutput"><span class="keyword">float</span></code> and <code class="computeroutput"><span class="keyword">double</span></code>.
+ </li>
+<li class="listitem">
+ Common type is <code class="computeroutput"><span class="keyword">double</span></code> -
+ so that's the precision we want (and the type that will be returned).
+ </li>
+<li class="listitem">
+ Evaluate internally as <code class="computeroutput"><span class="keyword">double</span></code>
+ for full <code class="computeroutput"><span class="keyword">float</span></code> precision.
+ </li>
+</ol></div>
+<p>
+ See full code for other examples that promote from <code class="computeroutput"><span class="keyword">double</span></code>
+ to <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+ </p>
+<p>
+ Other examples of 'bad' inputs like infinity and NaN are below. Some compiler
+ warnings indicate that 'bad' values are detected at compile time.
+ </p>
+<pre class="programlisting"><span class="keyword">try</span>
+<span class="special">{</span> <span class="comment">// order v = inf</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"boost::math::cyl_bessel_j_zero(inf, 1) "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">double</span> <span class="identifier">inf</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">();</span>
+ <span class="keyword">double</span> <span class="identifier">inf_root</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">inf</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"boost::math::cyl_bessel_j_zero(inf, 1) "</span> <span class="special"><<</span> <span class="identifier">inf_root</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Throw exception Error in function boost::math::cyl_bessel_j_zero<long double>(long double, unsigned):</span>
+ <span class="comment">// Order argument is 1.#INF, but must be finite >= 0 !</span>
+<span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">&</span> <span class="identifier">ex</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Thrown exception "</span> <span class="special"><<</span> <span class="identifier">ex</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">try</span>
+<span class="special">{</span> <span class="comment">// order v = NaN, rank m = 1</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"boost::math::cyl_bessel_j_zero(nan, 1) "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">double</span> <span class="identifier">nan</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
+ <span class="keyword">double</span> <span class="identifier">nan_root</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">nan</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"boost::math::cyl_bessel_j_zero(nan, 1) "</span> <span class="special"><<</span> <span class="identifier">nan_root</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Throw exception Error in function boost::math::cyl_bessel_j_zero<long double>(long double, unsigned):</span>
+ <span class="comment">// Order argument is 1.#QNAN, but must be finite >= 0 !</span>
+<span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">&</span> <span class="identifier">ex</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Thrown exception "</span> <span class="special"><<</span> <span class="identifier">ex</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The output from other examples are shown appended to the full code listing.
+ </p>
+<p>
+ The full code (and output) for these examples is at <a href="../../../../example/bessel_zeros_example_1.cpp" target="_top">Bessel
+ zeros</a>, <a href="../../../../example/bessel_zeros_interator_example.cpp" target="_top">Bessel
+ zeros iterator</a>, <a href="../../../../example/neumann_zeros_example_1.cpp" target="_top">Neumann
+ zeros</a>, <a href="../../../../example/bessel_errors_example.cpp" target="_top">Bessel
+ error messages</a>.
+ </p>
+<h4>
+<a name="math_toolkit.bessel.bessel_root.h6"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_root.implementation"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.implementation">Implementation</a>
+ </h4>
+<p>
+ Various methods are used to compute initial estimates for <span class="emphasis"><em>j<sub>ν, m</sub></em></span>
+ and <span class="emphasis"><em>y<sub>ν, m</sub></em></span> ; these are described in detail below.
+ </p>
+<p>
+ After finding the initial estimate of a given root, its precision is subsequently
+ refined to the desired level using Newton-Raphson iteration from Boost.Math's
+ <a class="link" href="../internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder">root-finding with derivatives</a>
+ utilities combined with the functions <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>.
+ </p>
+<p>
+ Newton iteration requires both <span class="emphasis"><em>J<sub>ν</sub>(x)</em></span> or <span class="emphasis"><em>Y<sub>ν</sub>(x)</em></span>
+ as well as its derivative. The derivatives of <span class="emphasis"><em>J<sub>ν</sub>(x)</em></span> and
+ <span class="emphasis"><em>Y<sub>ν</sub>(x)</em></span> with respect to <span class="emphasis"><em>x</em></span> are given
+ by M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions, NBS
+ (1964). In particular,
+ </p>
+<p>
+   <span class="emphasis"><em>d/<sub>dx</sub> <span class="emphasis"><em>J<sub>ν</sub>(x)</em></span> = <span class="emphasis"><em>J<sub>ν-1</sub>(x)</em></span> - ν J<sub>ν</sub>(x)</em></span>
+ / x
+ </p>
+<p>
+   <span class="emphasis"><em>d/<sub>dx</sub> <span class="emphasis"><em>Y<sub>ν</sub>(x)</em></span> = <span class="emphasis"><em>Y<sub>ν-1</sub>(x)</em></span> - ν Y<sub>ν</sub>(x)</em></span>
+ / x
+ </p>
+<p>
+ Enumeration of the rank of a root (in other words the index of a root) begins
+ with one and counts up, in other words <span class="emphasis"><em>m,=1,2,3,…</em></span> The
+ value of the first root is always greater than zero.
+ </p>
+<p>
+ For certain special parameters, cylindrical Bessel functions and cylindrical
+ Neumann functions have a root at the origin. For example, <span class="emphasis"><em>J<sub>ν</sub>(x)</em></span>
+ has a root at the origin for every positive order <span class="emphasis"><em>ν > 0</em></span>,
+ and for every negative integer order <span class="emphasis"><em>ν = -n</em></span> with <span class="emphasis"><em>n
+ ∈ ℕ <sup>+</sup></em></span> and <span class="emphasis"><em>n ≠ 0</em></span>.
+ </p>
+<p>
+ In addition, <span class="emphasis"><em>Y<sub>ν</sub>(x)</em></span> has a root at the origin for every
+ negative half-integer order <span class="emphasis"><em>ν = -n/2</em></span>, with <span class="emphasis"><em>n
+ ∈ ℕ <sup>+</sup></em></span> and and <span class="emphasis"><em>n ≠ 0</em></span>.
+ </p>
+<p>
+ For these special parameter values, the origin with a value of <span class="emphasis"><em>x
+ = 0</em></span> is provided as the <span class="emphasis"><em>0<sup>th</sup></em></span> root generated
+ by <code class="computeroutput"><span class="identifier">cyl_bessel_j_zero</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">cyl_neumann_zero</span><span class="special">()</span></code>.
+ </p>
+<p>
+ When calculating initial estimates for the roots of Bessel functions, a distinction
+ is made between positive order and negative order, and different methods
+ are used for these. In addition, different algorithms are used for the first
+ root <span class="emphasis"><em>m = 1</em></span> and for subsequent roots with higher rank
+ <span class="emphasis"><em>m ≥ 2</em></span>. Furthermore, estimates of the roots for Bessel
+ functions with order above and below a cutoff at <span class="emphasis"><em>ν = 2.2</em></span>
+ are calculated with different methods.
+ </p>
+<p>
+ Calculations of the estimates of <span class="emphasis"><em>j<sub>ν,1</sub></em></span> and <span class="emphasis"><em>y<sub>ν,1</sub></em></span>
+ with <span class="emphasis"><em>0 ≤ ν < 2.2</em></span> use empirically tabulated values. The
+ coefficients for these have been generated by a computer algebra system.
+ </p>
+<p>
+ Calculations of the estimates of <span class="emphasis"><em>j<sub>ν,1</sub></em></span> and <span class="emphasis"><em>y<sub>ν,1</sub></em></span>
+ with <span class="emphasis"><em>ν≥ 2.2</em></span> use Eqs.9.5.14 and 9.5.15 in M. Abramowitz
+ and I. A. Stegun, Handbook of Mathematical Functions, NBS (1964).
+ </p>
+<p>
+ In particular,
+ </p>
+<p>
+   <span class="emphasis"><em>j<sub>ν,1</sub> ≅ ν + 1.85575 ν<sup>⅓</sup> + 1.033150 ν<sup>-⅓</sup> - 0.00397 ν<sup>-1</sup> - 0.0908 ν<sup>-5/3</sup> + 0.043 ν<sup>-7/3</sup> +
+ …</em></span>
+ </p>
+<p>
+ and
+ </p>
+<p>
+   <span class="emphasis"><em>y<sub>ν,1</sub> ≅ ν + 0.93157 ν<sup>⅓</sup> + 0.26035 ν<sup>-⅓</sup> + 0.01198 ν<sup>-1</sup> - 0.0060 ν<sup>-5/3</sup> - 0.001 ν<sup>-7/3</sup> +
+ …</em></span>
+ </p>
+<p>
+ Calculations of the estimates of <span class="emphasis"><em>j<sub>ν, m</sub></em></span> and <span class="emphasis"><em>y<sub>ν,
+ m</sub></em></span> with rank <span class="emphasis"><em>m > 2</em></span> and <span class="emphasis"><em>0 ≤ ν <
+ 2.2</em></span> use McMahon's approximation, as described in M. Abramowitz
+ and I. A. Stegan, Section 9.5 and 9.5.12. In particular,
+ </p>
+<p>
+   <span class="emphasis"><em>j<sub>ν,m</sub>, y<sub>ν,m</sub> ≅ β - (μ-1) / 8β</em></span>
+ </p>
+<p>
+       <span class="emphasis"><em>- 4(μ-1)(7μ - 31) / 3(8β)<sup>3</sup></em></span>
+ </p>
+<p>
+       <span class="emphasis"><em>-32(μ-1)(83μ² - 982μ + 3779) / 15(8β)<sup>5</sup></em></span>
+ </p>
+<p>
+       <span class="emphasis"><em>-64(μ-1)(6949μ<sup>3</sup> - 153855μ² + 1585743μ- 6277237) / 105(8a)<sup>7</sup></em></span>
+ </p>
+<p>
+       <span class="emphasis"><em>- …</em></span>     (5)
+ </p>
+<p>
+ where <span class="emphasis"><em>μ = 4ν<sup>2</sup></em></span> and <span class="emphasis"><em>β = (m + ½ν - ¼)π</em></span> for
+ <span class="emphasis"><em>j<sub>ν,m</sub></em></span> and <span class="emphasis"><em>β = (m + ½ν -¾)π for <span class="emphasis"><em>y<sub>ν,m</sub></em></span></em></span>.
+ </p>
+<p>
+ Calculations of the estimates of <span class="emphasis"><em>j<sub>ν, m</sub></em></span> and <span class="emphasis"><em>y<sub>ν,
+ m</sub></em></span> with <span class="emphasis"><em>ν ≥ 2.2</em></span> use one term in the asymptotic
+ expansion given in Eq.9.5.22 and top line of Eq.9.5.26 combined with Eq.
+ 9.3.39, all in M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions,
+ NBS (1964) explicit and easy-to-understand treatment for asymptotic expansion
+ of zeros. The latter two equations are expressed for argument <span class="emphasis"><em>(x)</em></span>
+ greater than one. (Olver also gives the series form of the equations in
+ <a href="http://dlmf.nist.gov/10.21#vi" target="_top">§10.21(vi) McMahon's Asymptotic
+ Expansions for Large Zeros</a> - using slightly different variable names).
+ </p>
+<p>
+ In summary,
+ </p>
+<p>
+   <span class="emphasis"><em>j<sub>ν, m</sub> ∼ νx(-ζ) + f<sub>1</sub>(-ζ/ν)</em></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>-ζ = ν<sup>-2/3</sup>a<sub>m</sub></em></span> and <span class="emphasis"><em>a<sub>m</sub></em></span> is the absolute
+ value of the <span class="emphasis"><em>m<sup>th</sup></em></span> root of <span class="emphasis"><em>Ai(x)</em></span>
+ on the negative real axis.
+ </p>
+<p>
+ Here <span class="emphasis"><em>x = x(-ζ)</em></span> is the inverse of the function
+ </p>
+<p>
+   <span class="emphasis"><em>⅔(-ζ)<sup>3/2</sup> = √(x² - 1) - cos⁻¹(1/x)</em></span>     (7)
+ </p>
+<p>
+ Furthermore,
+ </p>
+<p>
+   <span class="emphasis"><em>f<sub>1</sub>(-ζ) = ½x(-ζ) {h(-ζ)}² ⋅ b<sub>0</sub>(-ζ)</em></span>
+ </p>
+<p>
+ where
+ </p>
+<p>
+   <span class="emphasis"><em>h(-ζ) = {4(-ζ) / (x² - 1)}<sup>4</sup></em></span>
+ </p>
+<p>
+ and
+ </p>
+<p>
+   <span class="emphasis"><em>b<sub>0</sub>(-ζ) = -5/(48ζ²) + 1/(-ζ)<sup>½</sup> ⋅ { 5/(24(x<sup>2</sup>-1)<sup>3/2</sup>) + 1/(8(x<sup>2</sup>-1)<sup>½)</sup>}</em></span>
+ </p>
+<p>
+ When solving for <span class="emphasis"><em>x(-ζ)</em></span> in Eq. 7 above, the right-hand-side
+ is expanded to order 2 in a Taylor series for large <span class="emphasis"><em>x</em></span>.
+ This results in
+ </p>
+<p>
+   <span class="emphasis"><em>⅔(-ζ)<sup>3/2</sup> ≈ x + 1/2x - π/2</em></span>
+ </p>
+<p>
+ The positive root of the resulting quadratic equation is used to find an
+ initial estimate <span class="emphasis"><em>x(-ζ)</em></span>. This initial estimate is subsequently
+ refined with several steps of Newton-Raphson iteration in Eq. 7.
+ </p>
+<p>
+ Estimates of the roots of cylindrical Bessel functions of negative order
+ on the positive real axis are found using interlacing relations. For example,
+ the <span class="emphasis"><em>m<sup>th</sup></em></span> root of the cylindrical Bessel function <span class="emphasis"><em>j<sub>-ν,m</sub></em></span>
+ is bracketed by the <span class="emphasis"><em>m<sup>th</sup></em></span> root and the <span class="emphasis"><em>(m+1)<sup>th</sup></em></span>
+ root of the Bessel function of corresponding positive integer order. In other
+ words,
+ </p>
+<p>
+   <span class="emphasis"><em>j<sub>nν,m</sub></em></span> < <span class="emphasis"><em>j<sub>-ν,m</sub></em></span> < <span class="emphasis"><em>j<sub>nν,m+1</sub></em></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>m > 1</em></span> and <span class="emphasis"><em>n<sub>ν</sub></em></span> represents
+ the integral floor of the absolute value of <span class="emphasis"><em>|-ν|</em></span>.
+ </p>
+<p>
+ Similar bracketing relations are used to find estimates of the roots of Neumann
+ functions of negative order, whereby a discontinuity at every negative half-integer
+ order needs to be handled.
+ </p>
+<p>
+ Bracketing relations do not hold for the first root of cylindrical Bessel
+ functions and cylindrical Neumann functions with negative order. Therefore,
+ iterative algorithms combined with root-finding via bisection are used to
+ localize <span class="emphasis"><em>j<sub>-ν,1</sub></em></span> and <span class="emphasis"><em>y<sub>-ν,1</sub></em></span>.
+ </p>
+<h4>
+<a name="math_toolkit.bessel.bessel_root.h7"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.bessel_root.testing"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.testing">Testing</a>
+ </h4>
+<p>
+ The precision of evaluation of zeros was tested at 50 decimal digits using
+ <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code> and found
+ identical with spot values computed by <a href="http://www.wolframalpha.com/" target="_top">Wolfram
+ Alpha</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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_first.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="mbessel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/bessel/mbessel.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/bessel/mbessel.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,481 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Modified Bessel Functions of the First and Second Kinds</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../bessel.html" title="Bessel Functions">
+<link rel="prev" href="bessel_root.html" title="Finding Zeros of Bessel Functions of the First and Second Kinds">
+<link rel="next" href="sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="bessel_root.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sph_bessel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_bessel_mbessel">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.bessel.mbessel"></a><a class="link" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">Modified Bessel Functions
+ of the First and Second Kinds</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.bessel.mbessel.h0"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.mbessel.synopsis"></a></span><a class="link" href="mbessel.html#math_toolkit.bessel.mbessel.synopsis">Synopsis</a>
+ </h5>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">bessel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_bessel_i</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_bessel_i</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_bessel_k</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_bessel_k</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<h5>
+<a name="math_toolkit.bessel.mbessel.h1"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.mbessel.description"></a></span><a class="link" href="mbessel.html#math_toolkit.bessel.mbessel.description">Description</a>
+ </h5>
+<p>
+ The functions <a class="link" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a>
+ and <a class="link" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_k</a> return
+ the result of the modified Bessel functions of the first and second kind
+ respectively:
+ </p>
+<p>
+ cyl_bessel_i(v, x) = I<sub>v</sub>(x)
+ </p>
+<p>
+ cyl_bessel_k(v, x) = K<sub>v</sub>(x)
+ </p>
+<p>
+ where:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel2.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel3.png"></span>
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The functions return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ whenever the result is undefined or complex. For <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ this occurs when <code class="computeroutput"><span class="identifier">x</span> <span class="special"><</span>
+ <span class="number">0</span></code> and v is not an integer, or when
+ <code class="computeroutput"><span class="identifier">x</span> <span class="special">==</span>
+ <span class="number">0</span></code> and <code class="computeroutput"><span class="identifier">v</span>
+ <span class="special">!=</span> <span class="number">0</span></code>.
+ For <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a> this
+ occurs when <code class="computeroutput"><span class="identifier">x</span> <span class="special"><=</span>
+ <span class="number">0</span></code>.
+ </p>
+<p>
+ The following graph illustrates the exponential behaviour of I<sub>v</sub>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/cyl_bessel_i.png" align="middle"></span>
+ </p>
+<p>
+ The following graph illustrates the exponential decay of K<sub>v</sub>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/cyl_bessel_k.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.bessel.mbessel.h2"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.mbessel.testing"></a></span><a class="link" href="mbessel.html#math_toolkit.bessel.mbessel.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of test values: spot values calculated using functions.wolfram.com,
+ and a much larger set of tests computed using a simplified version of this
+ implementation (with all the special case handling removed).
+ </p>
+<h5>
+<a name="math_toolkit.bessel.mbessel.h3"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.mbessel.accuracy"></a></span><a class="link" href="mbessel.html#math_toolkit.bessel.mbessel.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following tables show how the accuracy of these functions varies on various
+ platforms, along with a comparison to the GSL-1.9
+ library. Note that only results for the widest floating-point type on the
+ system are given, as narrower types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>. All values are relative errors in units of epsilon.
+ </p>
+<div class="table">
+<a name="math_toolkit.bessel.mbessel.errors_rates_in_cyl_bessel_i"></a><p class="title"><b>Table 3.23. Errors Rates in cyl_bessel_i</b></p>
+<div class="table-contents"><table class="table" summary="Errors Rates in cyl_bessel_i">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ I<sub>v</sub>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 / Visual C++ 8.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=10 Mean=3.4 GSL Peak=6000
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64 / G++ 3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=11 Mean=3
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux AMD64 / G++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=11 Mean=4
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HP-UX / HP aCC 6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=15 Mean=4
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.bessel.mbessel.errors_rates_in_cyl_bessel_k"></a><p class="title"><b>Table 3.24. Errors Rates in cyl_bessel_k</b></p>
+<div class="table-contents"><table class="table" summary="Errors Rates in cyl_bessel_k">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ K<sub>v</sub>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 / Visual C++ 8.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=9 Mean=2
+ </p>
+ <p>
+ GSL Peak=9
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64 / G++ 3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=10 Mean=2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux AMD64 / G++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=10 Mean=2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HP-UX / HP aCC 6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=12 Mean=5
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.bessel.mbessel.h4"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.mbessel.implementation"></a></span><a class="link" href="mbessel.html#math_toolkit.bessel.mbessel.implementation">Implementation</a>
+ </h5>
+<p>
+ The following are handled as special cases first:
+ </p>
+<p>
+ When computing I<sub>v</sub>   for <span class="emphasis"><em>x < 0</em></span>, then ν   must be an integer
+ or a domain error occurs. If ν   is an integer, then the function is odd if ν   is
+ odd and even if ν   is even, and we can reflect to <span class="emphasis"><em>x > 0</em></span>.
+ </p>
+<p>
+ For I<sub>v</sub>   with v equal to 0, 1 or 0.5 are handled as special cases.
+ </p>
+<p>
+ The 0 and 1 cases use minimax rational approximations on finite and infinite
+ intervals. The coefficients are from:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ J.M. Blair and C.A. Edwards, <span class="emphasis"><em>Stable rational minimax approximations
+ to the modified Bessel functions I_0(x) and I_1(x)</em></span>, Atomic
+ Energy of Canada Limited Report 4928, Chalk River, 1974.
+ </li>
+<li class="listitem">
+ S. Moshier, <span class="emphasis"><em>Methods and Programs for Mathematical Functions</em></span>,
+ Ellis Horwood Ltd, Chichester, 1989.
+ </li>
+</ul></div>
+<p>
+ While the 0.5 case is a simple trigonometric function:
+ </p>
+<p>
+ I<sub>0.5</sub>(x) = sqrt(2 / πx) * sinh(x)
+ </p>
+<p>
+ For K<sub>v</sub>   with <span class="emphasis"><em>v</em></span> an integer, the result is calculated using
+ the recurrence relation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel5.png"></span>
+ </p>
+<p>
+ starting from K<sub>0</sub>   and K<sub>1</sub>   which are calculated using rational the approximations
+ above. These rational approximations are accurate to around 19 digits, and
+ are therefore only used when T has no more than 64 binary digits of precision.
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is small compared to <span class="emphasis"><em>v</em></span>,
+ I<sub>v</sub>x   is best computed directly from the series:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel17.png"></span>
+ </p>
+<p>
+ In the general case, we first normalize ν   to [<code class="literal">0, [inf]</code>)
+ with the help of the reflection formulae:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel9.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel10.png"></span>
+ </p>
+<p>
+ Let μ   = ν - floor(ν + 1/2), then μ   is the fractional part of ν   such that |μ| <= 1/2
+ (we need this for convergence later). The idea is to calculate K<sub>μ</sub>(x) and K<sub>μ+1</sub>(x),
+ and use them to obtain I<sub>ν</sub>(x) and K<sub>ν</sub>(x).
+ </p>
+<p>
+ The algorithm is proposed by Temme in N.M. Temme, <span class="emphasis"><em>On the numerical
+ evaluation of the modified bessel function of the third kind</em></span>,
+ Journal of Computational Physics, vol 19, 324 (1975), which needs two continued
+ fractions as well as the Wronskian:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel11.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel12.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel8.png"></span>
+ </p>
+<p>
+ The continued fractions are computed using the modified Lentz's method (W.J.
+ Lentz, <span class="emphasis"><em>Generating Bessel functions in Mie scattering calculations
+ using continued fractions</em></span>, Applied Optics, vol 15, 668 (1976)).
+ Their convergence rates depend on <span class="emphasis"><em>x</em></span>, therefore we need
+ different strategies for large <span class="emphasis"><em>x</em></span> and small <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ <span class="emphasis"><em>x > v</em></span>, CF1 needs O(<span class="emphasis"><em>x</em></span>) iterations
+ to converge, CF2 converges rapidly.
+ </p>
+<p>
+ <span class="emphasis"><em>x <= v</em></span>, CF1 converges rapidly, CF2 fails to converge
+ when <span class="emphasis"><em>x</em></span> <code class="literal">-></code> 0.
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is large (<span class="emphasis"><em>x</em></span> > 2), both
+ continued fractions converge (CF1 may be slow for really large <span class="emphasis"><em>x</em></span>).
+ K<sub>μ</sub>   and K<sub>μ+1</sub>  
+can be calculated by
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel13.png"></span>
+ </p>
+<p>
+ where
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel14.png"></span>
+ </p>
+<p>
+ <span class="emphasis"><em>S</em></span> is also a series that is summed along with CF2, see
+ I.J. Thompson and A.R. Barnett, <span class="emphasis"><em>Modified Bessel functions I_v and
+ K_v of real order and complex argument to selected accuracy</em></span>, Computer
+ Physics Communications, vol 47, 245 (1987).
+ </p>
+<p>
+ When <span class="emphasis"><em>x</em></span> is small (<span class="emphasis"><em>x</em></span> <= 2), CF2
+ convergence may fail (but CF1 works very well). The solution here is Temme's
+ series:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel15.png"></span>
+ </p>
+<p>
+ where
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/mbessel16.png"></span>
+ </p>
+<p>
+ f<sub>k</sub>   and h<sub>k</sub>  
+are also computed by recursions (involving gamma functions), but
+ the formulas are a little complicated, readers are referred to N.M. Temme,
+ <span class="emphasis"><em>On the numerical evaluation of the modified Bessel function of
+ the third kind</em></span>, Journal of Computational Physics, vol 19, 324
+ (1975). Note: Temme's series converge only for |μ| <= 1/2.
+ </p>
+<p>
+ K<sub>ν</sub>(x) is then calculated from the forward recurrence, as is K<sub>ν+1</sub>(x). With these
+ two values and f<sub>ν</sub>, the Wronskian yields I<sub>ν</sub>(x) directly.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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_root.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sph_bessel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/bessel/sph_bessel.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/bessel/sph_bessel.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,152 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Spherical Bessel Functions of the First and Second Kinds</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<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="../hankel.html" title="Hankel Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="mbessel.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../hankel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_bessel_sph_bessel">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.bessel.sph_bessel"></a><a class="link" href="sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">Spherical Bessel Functions
+ of the First and Second Kinds</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.bessel.sph_bessel.h0"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.sph_bessel.synopsis"></a></span><a class="link" href="sph_bessel.html#math_toolkit.bessel.sph_bessel.synopsis">Synopsis</a>
+ </h5>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">bessel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<h5>
+<a name="math_toolkit.bessel.sph_bessel.h1"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.sph_bessel.description"></a></span><a class="link" href="sph_bessel.html#math_toolkit.bessel.sph_bessel.description">Description</a>
+ </h5>
+<p>
+ The functions <a class="link" href="sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">sph_bessel</a>
+ and <a class="link" href="sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">sph_neumann</a> return
+ the result of the Spherical Bessel functions of the first and second kinds
+ respectively:
+ </p>
+<p>
+ sph_bessel(v, x) = j<sub>v</sub>(x)
+ </p>
+<p>
+ sph_neumann(v, x) = y<sub>v</sub>(x) = n<sub>v</sub>(x)
+ </p>
+<p>
+ where:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/sbessel2.png"></span>
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a> for the single argument type T.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The functions return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ whenever the result is undefined or complex: this occurs when <code class="computeroutput"><span class="identifier">x</span> <span class="special"><</span> <span class="number">0</span></code>.
+ </p>
+<p>
+ The j<sub>v</sub>   function is cyclic like J<sub>v</sub>   but differs in its behaviour at the origin:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/sph_bessel.png" align="middle"></span>
+ </p>
+<p>
+ Likewise y<sub>v</sub>   is also cyclic for large x, but tends to -∞  
+for small <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/sph_neumann.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.bessel.sph_bessel.h2"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.sph_bessel.testing"></a></span><a class="link" href="sph_bessel.html#math_toolkit.bessel.sph_bessel.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of test values: spot values calculated using functions.wolfram.com,
+ and a much larger set of tests computed using a simplified version of this
+ implementation (with all the special case handling removed).
+ </p>
+<h5>
+<a name="math_toolkit.bessel.sph_bessel.h3"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.sph_bessel.accuracy"></a></span><a class="link" href="sph_bessel.html#math_toolkit.bessel.sph_bessel.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Other than for some special cases, these functions are computed in terms
+ of <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a> and
+ <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>: refer
+ to these functions for accuracy data.
+ </p>
+<h5>
+<a name="math_toolkit.bessel.sph_bessel.h4"></a>
+ <span class="phrase"><a name="math_toolkit.bessel.sph_bessel.implementation"></a></span><a class="link" href="sph_bessel.html#math_toolkit.bessel.sph_bessel.implementation">Implementation</a>
+ </h5>
+<p>
+ Other than error handling and a couple of special cases these functions are
+ implemented directly in terms of their definitions:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/sbessel2.png"></span>
+ </p>
+<p>
+ The special cases occur for:
+ </p>
+<p>
+ j<sub>0</sub>  = <a class="link" href="../sinc/sinc_pi.html" title="sinc_pi">sinc_pi</a>(x) = sin(x)
+ / x
+ </p>
+<p>
+ and for small <span class="emphasis"><em>x < 1</em></span>, we can use the series:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/sbessel5.png"></span>
+ </p>
+<p>
+ which neatly avoids the problem of calculating 0/0 that can occur with the
+ main definition as x → 0.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="mbessel.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bessel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../hankel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/building.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/building.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,154 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>If and How to Build a Boost.Math Library, and its Examples and Tests</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="perf_over1.html" title="Performance">
+<link rel="next" href="history1.html" title="History and What's New">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="perf_over1.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="history1.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_building">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.building"></a><a class="link" href="building.html" title="If and How to Build a Boost.Math Library, and its Examples and Tests">If and How to Build a Boost.Math
+ Library, and its Examples and Tests</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.building.h0"></a>
+ <span class="phrase"><a name="math_toolkit.building.building_a_library_shared_dynami"></a></span><a class="link" href="building.html#math_toolkit.building.building_a_library_shared_dynami">Building a
+ Library (shared, dynamic .dll or static .lib)</a>
+ </h5>
+<p>
+ The first thing you need to ask yourself is "Do I need to build anything
+ at all?" as the bulk of this library is header only: meaning you can use
+ it just by #including the necessary header(s).
+ </p>
+<p>
+ For most simple uses, including a header (or few) is best for compile time
+ and program size.
+ </p>
+<p>
+ Refer to <a class="link" href="../extern_c.html" title='Chapter 5. TR1 and C99 external "C" Functions'>C99 and C++ TR1 C-style Functions</a>
+ for pros and cons of using the TR1 components as opposed to the header only
+ ones.
+ </p>
+<p>
+ The <span class="emphasis"><em>only</em></span> time you <span class="emphasis"><em>need</em></span> to build the
+ library is if you want to use the <code class="computeroutput"><span class="keyword">extern</span>
+ <span class="string">"C"</span></code> functions declared in
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>. To build this using Boost.Build, from
+ a commandline boost-root directory issue a command like:
+ </p>
+<pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">toolset</span><span class="special">=</span><span class="identifier">gcc</span> <span class="special">--</span><span class="identifier">with</span><span class="special">-</span><span class="identifier">math</span> <span class="identifier">install</span>
+</pre>
+<p>
+ that will do the job on Linux, while:
+ </p>
+<pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">toolset</span><span class="special">=</span><span class="identifier">msvc</span> <span class="special">--</span><span class="identifier">with</span><span class="special">-</span><span class="identifier">math</span> <span class="special">--</span><span class="identifier">build</span><span class="special">-</span><span class="identifier">type</span><span class="special">=</span><span class="identifier">complete</span> <span class="identifier">stage</span>
+</pre>
+<p>
+ will work better on Windows (leaving libraries built in sub-folder <code class="computeroutput"><span class="special">/</span><span class="identifier">stage</span></code> below
+ your Boost root directory). Either way you should consult the <a href="http://www.boost.org/doc/libs/release/more/getting_started/index.html" target="_top">getting
+ started guide</a> for more information.
+ </p>
+<p>
+ You can also build the libraries from your favourite IDE or command line tool:
+ each <code class="computeroutput"><span class="keyword">extern</span> <span class="string">"C"</span></code>
+ function declared in <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> has its own source file with the same name
+ in <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">src</span><span class="special">/</span><span class="identifier">tr1</span></code>. Just
+ select the sources corresponding to the functions you are using and build them
+ into a library, or else add them directly to your project. Note that the directory
+ <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">src</span><span class="special">/</span><span class="identifier">tr1</span></code> will
+ need to be in your compiler's #include path as well as the boost-root directory
+ (MSVC Tools, Options, Projects and Solutions, VC++ Directories, Include files).
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If you are using a Windows compiler that supports auto-linking and you have
+ built the sources yourself (or added them directly to your project) then
+ you will need to prevent <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ from trying to auto-link to the binaries that Boost.Build generates. You
+ can do this by defining either BOOST_MATH_NO_LIB or BOOST_ALL_NO_LIB at project
+ level (so the defines get passed to each compiler invocation).
+ </p></td></tr>
+</table></div>
+<p>
+ Optionally the sources in <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">src</span><span class="special">/</span><span class="identifier">tr1</span></code>
+ have support for using <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">src</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">pch</span><span class="special">.</span><span class="identifier">hpp</span></code> as a precompiled header <span class="emphasis"><em>if
+ your compiler supports precompiled headers.</em></span> Note that normally this
+ header is a do-nothing include: to activate the header so that it #includes
+ everything required by all the sources you will need to define BOOST_BUILD_PCH_ENABLED
+ on the command line, both when building the pre-compiled header and when building
+ the sources. Boost.Build will do this automatically when appropriate.
+ </p>
+<h5>
+<a name="math_toolkit.building.h1"></a>
+ <span class="phrase"><a name="math_toolkit.building.building_the_examples"></a></span><a class="link" href="building.html#math_toolkit.building.building_the_examples">Building
+ the Examples</a>
+ </h5>
+<p>
+ The examples are all located in <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">example</span></code>, they can all be built without reference
+ to any external libraries, either with Boost.Build using the supplied Jamfile,
+ or from your compiler's command line. The only requirement is that the Boost
+ headers are in your compilers #include search path.
+ </p>
+<h5>
+<a name="math_toolkit.building.h2"></a>
+ <span class="phrase"><a name="math_toolkit.building.building_the_tests"></a></span><a class="link" href="building.html#math_toolkit.building.building_the_tests">Building
+ the Tests</a>
+ </h5>
+<p>
+ The tests are located in <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">test</span></code> and are best built using Boost.Build
+ and the supplied Jamfile. If you plan to build them separately from your favourite
+ IDE then you will need to add <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">test</span></code> to the list of your compiler's search
+ paths.
+ </p>
+<p>
+ You will also need to build and link to the Boost.Regex library for many of
+ the tests: this can built from the command line by following the <a href="http://www.boost.org/doc/libs/release/more/getting_started/index.html" target="_top">getting
+ started guide</a>, using a command such as:
+ </p>
+<pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">toolset</span><span class="special">=</span><span class="identifier">gcc</span> <span class="special">--</span><span class="identifier">with</span><span class="special">-</span><span class="identifier">regex</span> <span class="identifier">install</span>
+</pre>
+<p>
+ or
+ </p>
+<pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">toolset</span><span class="special">=</span><span class="identifier">msvc</span> <span class="special">--</span><span class="identifier">with</span><span class="special">-</span><span class="identifier">regex</span> <span class="special">--</span><span class="identifier">build</span><span class="special">-</span><span class="identifier">type</span><span class="special">=</span><span class="identifier">complete</span> <span class="identifier">stage</span>
+</pre>
+<p>
+ depending on whether you are on Linux or Windows.
+ </p>
+<p>
+ Many of the tests have optional precompiled header support using the header
+ <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">pch</span><span class="special">.</span><span class="identifier">hpp</span></code>. Note that normally this header is a
+ do-nothing include: to activate the header so that it #includes everything
+ required by all the sources you will need to define BOOST_BUILD_PCH_ENABLED
+ on the command line, both when building the pre-compiled header and when building
+ the sources. Boost.Build will do this automatically when appropriate.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="perf_over1.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="history1.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/c99.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/c99.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,467 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>C99 C Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../extern_c.html" title='Chapter 5. TR1 and C99 external "C" Functions'>
+<link rel="prev" href="main_tr1.html" title="C99 and TR1 C Functions Overview">
+<link rel="next" href="tr1_ref.html" title="TR1 C Functions Quick Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="main_tr1.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../extern_c.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tr1_ref.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_c99">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.c99"></a><a class="link" href="c99.html" title="C99 C Functions">C99 C Functions</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.c99.h0"></a>
+ <span class="phrase"><a name="math_toolkit.c99.supported_c99_functions"></a></span><a class="link" href="c99.html#math_toolkit.c99.supported_c99_functions">Supported
+ C99 Functions</a>
+ </h5>
+<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">namespace</span> <span class="identifier">tr1</span><span class="special">{</span> <span class="keyword">extern</span> <span class="string">"C"</span><span class="special">{</span>
+
+<span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">float_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">double_t</span><span class="special">;</span>
+
+<span class="keyword">double</span> <span class="identifier">acosh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">acoshf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">acoshl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">asinh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">asinhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">asinhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">atanh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">atanhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">atanhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">cbrt</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cbrtf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cbrtl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">copysign</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">copysignf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">copysignl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">erf</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">erff</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">erfc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">erfcf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfcl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">expm1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">expm1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expm1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fmax</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fmaxf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fmaxl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fmin</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fminf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fminl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">hypot</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hypotf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypotl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">lgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">lgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">lgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">log1p</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">log1pf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">log1pl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="identifier">lround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nextafter</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nextafterf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nextafterl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nexttoward</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nexttowardf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nexttowardl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">round</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">roundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">roundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">tgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">tgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">trunc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">truncf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">truncl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="special">}}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ In addition sufficient additional overloads of the <code class="computeroutput"><span class="keyword">double</span></code>
+ versions of the above functions are provided, so that calling the function
+ with any mixture of <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code>, <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>, or <span class="emphasis"><em>integer</em></span>
+ arguments is supported, with the return type determined by the <a class="link" href="result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>.
+ </p>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">acoshf</span><span class="special">(</span><span class="number">2.0f</span><span class="special">);</span> <span class="comment">// float version, returns float.</span>
+<span class="identifier">acosh</span><span class="special">(</span><span class="number">2.0f</span><span class="special">);</span> <span class="comment">// also calls the float version and returns float.</span>
+<span class="identifier">acosh</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span> <span class="comment">// double version, returns double.</span>
+<span class="identifier">acoshl</span><span class="special">(</span><span class="number">2.0L</span><span class="special">);</span> <span class="comment">// long double version, returns a long double.</span>
+<span class="identifier">acosh</span><span class="special">(</span><span class="number">2.0L</span><span class="special">);</span> <span class="comment">// also calls the long double version.</span>
+<span class="identifier">acosh</span><span class="special">(</span><span class="number">2</span><span class="special">);</span> <span class="comment">// integer argument is treated as a double, returns double.</span>
+</pre>
+<h5>
+<a name="math_toolkit.c99.h1"></a>
+ <span class="phrase"><a name="math_toolkit.c99.quick_reference"></a></span><a class="link" href="c99.html#math_toolkit.c99.quick_reference">Quick
+ Reference</a>
+ </h5>
+<p>
+ More detailed descriptions of these functions are available in the C99 standard.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">float_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">double_t</span><span class="special">;</span>
+</pre>
+<p>
+ In this implementation <code class="computeroutput"><span class="identifier">float_t</span></code>
+ is the same as type <code class="computeroutput"><span class="keyword">float</span></code>, and
+ <code class="computeroutput"><span class="identifier">double_t</span></code> the same as type
+ <code class="computeroutput"><span class="keyword">double</span></code> unless the preprocessor
+ symbol FLT_EVAL_METHOD is defined, in which case these are set as follows:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ FLT_EVAL_METHOD
+ </p>
+ </th>
+<th>
+ <p>
+ float_t
+ </p>
+ </th>
+<th>
+ <p>
+ double_t
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+<td>
+ <p>
+ float
+ </p>
+ </td>
+<td>
+ <p>
+ double
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 1
+ </p>
+ </td>
+<td>
+ <p>
+ double
+ </p>
+ </td>
+<td>
+ <p>
+ double
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ long double
+ </p>
+ </td>
+<td>
+ <p>
+ long double
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">acosh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">acoshf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">acoshl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the inverse hyperbolic cosine of <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ See also <a class="link" href="inv_hyper/acosh.html" title="acosh">acosh</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">asinh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">asinhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">asinhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the inverse hyperbolic sine of <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ See also <a class="link" href="inv_hyper/asinh.html" title="asinh">asinh</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">atanh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">atanhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">atanhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the inverse hyperbolic tangent of <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ See also <a class="link" href="inv_hyper/atanh.html" title="atanh">atanh</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">cbrt</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cbrtf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cbrtl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the cubed root of <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ See also <a class="link" href="powers/cbrt.html" title="cbrt">cbrt</a> for the full
+ template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">copysign</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">copysignf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">copysignl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+</pre>
+<p>
+ Returns a value with the magnitude of <span class="emphasis"><em>x</em></span> and the sign of
+ <span class="emphasis"><em>y</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">erf</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">erff</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the error function of <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/erf1.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_erf/error_function.html" title="Error Functions">erf</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">erfc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">erfcf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfcl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the complementary error function of <span class="emphasis"><em>x</em></span> <code class="computeroutput"><span class="number">1</span><span class="special">-</span><span class="identifier">erf</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>
+ without the loss of precision implied by the subtraction.
+ </p>
+<p>
+ See also <a class="link" href="sf_erf/error_function.html" title="Error Functions">erfc</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">expm1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">expm1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expm1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="identifier">exp</span><span class="special">(</span><span class="identifier">x</span><span class="special">)-</span><span class="number">1</span></code>
+ without the loss of precision implied by the subtraction.
+ </p>
+<p>
+ See also <a class="link" href="powers/expm1.html" title="expm1">expm1</a> for the full
+ template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">fmax</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fmaxf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fmaxl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the larger (most positive) of <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>y</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">fmin</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fminf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fminl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the smaller (most negative) of <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>y</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">hypot</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hypotf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypotl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">x</span><span class="special">*</span><span class="identifier">x</span>
+ <span class="special">+</span> <span class="identifier">y</span><span class="special">*</span><span class="identifier">y</span><span class="special">)</span></code>
+ without the danger of numeric overflow implied by that formulation.
+ </p>
+<p>
+ See also <a class="link" href="powers/hypot.html" title="hypot">hypot</a> for the full
+ template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">lgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">lgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">lgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the log of the gamma function of <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lgamm1.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_gamma/lgamma.html" title="Log Gamma">lgamma</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the value <span class="emphasis"><em>x</em></span> rounded to the nearest integer as
+ a <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">long</span></code>:
+ equivalent to <code class="computeroutput"><span class="identifier">floor</span><span class="special">(</span><span class="identifier">x</span> <span class="special">+</span> <span class="number">0.5</span><span class="special">)</span></code>
+ </p>
+<p>
+ See also <a class="link" href="rounding/round.html" title="Rounding Functions">round</a> for the full
+ template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">log1p</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">log1pf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">log1pl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the <code class="computeroutput"><span class="identifier">log</span><span class="special">(</span><span class="identifier">x</span><span class="special">+</span><span class="number">1</span><span class="special">)</span></code> without the loss of precision implied by that
+ formulation.
+ </p>
+<p>
+ See also <a class="link" href="powers/log1p.html" title="log1p">log1p</a> for the full
+ template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">long</span> <span class="identifier">lround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the value <span class="emphasis"><em>x</em></span> rounded to the nearest integer as
+ a <code class="computeroutput"><span class="keyword">long</span></code>: equivalent to <code class="computeroutput"><span class="identifier">floor</span><span class="special">(</span><span class="identifier">x</span>
+ <span class="special">+</span> <span class="number">0.5</span><span class="special">)</span></code>
+ </p>
+<p>
+ See also <a class="link" href="rounding/round.html" title="Rounding Functions">round</a> for the full
+ template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">nextafter</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nextafterf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nextafterl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the next representable floating point number after <span class="emphasis"><em>x</em></span>
+ in the direction of <span class="emphasis"><em>y</em></span>, or <span class="emphasis"><em>x</em></span> if <code class="computeroutput"><span class="identifier">x</span> <span class="special">==</span> <span class="identifier">y</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">nexttoward</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nexttowardf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nexttowardl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+</pre>
+<p>
+ As <code class="computeroutput"><span class="identifier">nextafter</span></code>, but with <span class="emphasis"><em>y</em></span>
+ always expressed as a <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">round</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">roundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">roundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the value <span class="emphasis"><em>x</em></span> rounded to the nearest integer: equivalent
+ to <code class="computeroutput"><span class="identifier">floor</span><span class="special">(</span><span class="identifier">x</span> <span class="special">+</span> <span class="number">0.5</span><span class="special">)</span></code>
+ </p>
+<p>
+ See also <a class="link" href="rounding/round.html" title="Rounding Functions">round</a> for the full
+ template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">tgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">tgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the gamma function of <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/gamm1.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_gamma/tgamma.html" title="Gamma">tgamma</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">trunc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">truncf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">truncl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <span class="emphasis"><em>x</em></span> truncated to the nearest integer.
+ </p>
+<p>
+ See also <a class="link" href="rounding/trunc.html" title="Truncation Functions">trunc</a> for the full
+ template (header only) version of this function.
+ </p>
+<p>
+ See also <a href="http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf" target="_top">C99
+ ISO Standard</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="main_tr1.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../extern_c.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tr1_ref.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/comp_compilers.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/comp_compilers.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,369 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Comparing Compilers</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../perf.html" title="Chapter 14. Performance">
+<link rel="prev" href="getting_best.html" title="Getting the Best Performance from this Library">
+<link rel="next" href="tuning.html" title="Performance Tuning Macros">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="getting_best.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tuning.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_comp_compilers">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.comp_compilers"></a><a class="link" href="comp_compilers.html" title="Comparing Compilers">Comparing Compilers</a>
+</h2></div></div></div>
+<p>
+ After a good choice of build settings the next most important thing you can
+ do, is choose your compiler - and the standard C library it sits on top of
+ - very carefully. GCC-3.x in particular has been found to be particularly bad
+ at inlining code, and performing the kinds of high level transformations that
+ good C++ performance demands (thankfully GCC-4.x is somewhat better in this
+ respect).
+ </p>
+<div class="table">
+<a name="math_toolkit.comp_compilers.performance_comparison_of_variou"></a><p class="title"><b>Table 14.2. Performance Comparison of Various Windows Compilers</b></p>
+<div class="table-contents"><table class="table" summary="Performance Comparison of Various Windows Compilers">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Intel C++ 10.0
+ </p>
+ <p>
+ ( /Ox /Qipo /QxN )
+ </p>
+ </th>
+<th>
+ <p>
+ Microsoft Visual C++ 8.0
+ </p>
+ <p>
+ ( /Ox /arch:SSE2 )
+ </p>
+ </th>
+<th>
+ <p>
+ Cygwin G++ 3.4
+ </p>
+ <p>
+ ( /O3 )
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_erf/error_function.html" title="Error Functions">erf</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.118e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.483e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.24</p>
+<p> </p>
+<p>(1.336e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_erf/error_inv.html" title="Error Function Inverses">erf_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.439e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.888e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>7.88</p>
+<p> </p>
+<p>(3.500e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>
+ and <a class="link" href="sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.631e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.14</p>
+<p> </p>
+<p>(1.852e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.05</p>
+<p> </p>
+<p>(4.975e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>
+ and <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.133e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.19</p>
+<p> </p>
+<p>(7.311e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.60</p>
+<p> </p>
+<p>(1.597e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inva</a>,
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inva</a>,
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_invb</a>
+ and <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_invb</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.453e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.16</p>
+<p> </p>
+<p>(2.847e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.83</p>
+<p> </p>
+<p>(6.947e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a> and
+ <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.735e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.41</p>
+<p> </p>
+<p>(9.504e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.78</p>
+<p> </p>
+<p>(1.872e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>
+ and <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.637e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.38</p>
+<p> </p>
+<p>(3.631e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.31</p>
+<p> </p>
+<p>(8.736e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inva</a>
+ and <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inva</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(7.716e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.29</p>
+<p> </p>
+<p>(9.982e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.56</p>
+<p> </p>
+<p>(1.974e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="getting_best.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tuning.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/comparisons.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/comparisons.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,3128 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Comparisons to Other Open Source Libraries</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../perf.html" title="Chapter 14. Performance">
+<link rel="prev" href="tuning.html" title="Performance Tuning Macros">
+<link rel="next" href="perf_test_app.html" title="The Performance Test Application">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="tuning.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="perf_test_app.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_comparisons">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.comparisons"></a><a class="link" href="comparisons.html" title="Comparisons to Other Open Source Libraries">Comparisons to Other Open Source
+ Libraries</a>
+</h2></div></div></div>
+<p>
+ We've run our performance tests both for our own code, and against other open
+ source implementations of the same functions. The results are presented below
+ to give you a rough idea of how they all compare.
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ You should exercise extreme caution when interpreting these results, relative
+ performance may vary by platform, the tests use data that gives good code
+ coverage of <span class="emphasis"><em>our</em></span> code, but which may skew the results
+ towards the corner cases. Finally, remember that different libraries make
+ different choices with regard to performance verses numerical stability.
+ </p></td></tr>
+</table></div>
+<h4>
+<a name="math_toolkit.comparisons.h0"></a>
+ <span class="phrase"><a name="math_toolkit.comparisons.comparison_to_gsl_1_13_and_cephe"></a></span><a class="link" href="comparisons.html#math_toolkit.comparisons.comparison_to_gsl_1_13_and_cephe">Comparison
+ to GSL-1.13 and Cephes</a>
+ </h4>
+<p>
+ All the results were measured on a 2.0GHz Intel T5800 Core 2 Duo, 4Gb RAM,
+ Windows Vista machine, with the test program compiled with Microsoft Visual
+ C++ 2009 using the /Ox option.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Boost
+ </p>
+ </th>
+<th>
+ <p>
+ GSL-1.9
+ </p>
+ </th>
+<th>
+ <p>
+ Cephes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="powers/cbrt.html" title="cbrt">cbrt</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.873e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ N/A
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.699e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="powers/log1p.html" title="log1p">log1p</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.664e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.677e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.189e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="powers/expm1.html" title="expm1">expm1</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(8.760e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.248e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(8.169e-008s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/tgamma.html" title="Gamma">tgamma</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.80</p>
+<p> </p>
+<p>(2.997e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.54</p>
+<p> </p>
+<p>(2.569e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.666e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/lgamma.html" title="Log Gamma">lgamma</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.20</p>
+<p> </p>
+<p>(3.045e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>4.14</p>
+<p> </p>
+<p>(5.713e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.381e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_erf/error_function.html" title="Error Functions">erf</a> and
+ <a class="link" href="sf_erf/error_function.html" title="Error Functions">erfc</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.483e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(7.052e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.722e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a> and
+ <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.182e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.57</p>
+<p> </p>
+<p>(2.209e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>4.29</p>
+<p> </p>
+<p>(2.651e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>
+ and <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.943e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ N/A
+ </p>
+ </td>
+<td>
+ <p>
+ +INF [1]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>
+ and <a class="link" href="sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.670e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.16</p>
+<p> </p>
+<p>(1.935e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.16</p>
+<p> </p>
+<p>(1.935e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>
+ and <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.075e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ N/A
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.45</p>
+<p> </p>
+<p>(1.489e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>17.89[2]</p>
+<p> </p>
+<p>(4.248e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.214e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.374e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.924e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.487e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.823e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_k</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.783e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(3.927e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ N/A
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.465e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.230e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.977e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+</tbody>
+<tbody class="footnotes"><tr><td colspan="4">
+<div id="ftn.math_toolkit.comparisons.f0" class="footnote"><p>[1]
+ Cephes gets stuck in an infinite loop while trying to execute our
+ test cases.
+ </p></div>
+<div id="ftn.math_toolkit.comparisons.f1" class="footnote"><p>[2]
+ The performance here is dominated by a few cases where the parameters
+ grow very large: faster asymptotic expansions are available, but
+ are of limited (or even frankly terrible) precision. The same issue
+ effects all of our Bessel function implementations, but doesn't
+ necessarily show in the current performance data. More investigation
+ is needed here.
+ </p></div>
+</td></tr></tbody>
+</table></div>
+<h4>
+<a name="math_toolkit.comparisons.h1"></a>
+ <span class="phrase"><a name="math_toolkit.comparisons.comparison_to_the_r_and_dcdflib_"></a></span><a class="link" href="comparisons.html#math_toolkit.comparisons.comparison_to_the_r_and_dcdflib_">Comparison
+ to the R and DCDFLIB Statistical Libraries on Windows</a>
+ </h4>
+<p>
+ All the results were measured on a 2.0GHz Intel T5800 Core 2 Duo, 4Gb RAM,
+ Windows Vista machine, with the test program compiled with Microsoft Visual
+ C++ 2009, and R-2.9.2 compiled in "standalone mode" with MinGW-4.3
+ (R-2.9.2 appears not to be buildable with Visual C++).
+ </p>
+<div class="table">
+<a name="math_toolkit.comparisons.a_comparison_to_the_r_statistica"></a><p class="title"><b>Table 14.5. A Comparison to the R Statistical Library on Windows XP</b></p>
+<div class="table-contents"><table class="table" summary="A Comparison to the R Statistical Library on Windows XP">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Statistical Function
+ </p>
+ </th>
+<th>
+ <p>
+ Boost
+ </p>
+ </th>
+<th>
+ <p>
+ R
+ </p>
+ </th>
+<th>
+ <p>
+ DCDFLIB
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/beta_dist.html" title="Beta Distribution">Beta Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.08</p>
+<p> </p>
+<p>(1.385e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.278e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.06</p>
+<p> </p>
+<p>(1.349e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/beta_dist.html" title="Beta Distribution">Beta Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.975e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>67.66[1]</p>
+<p> </p>
+<p>(3.366e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>4.23</p>
+<p> </p>
+<p>(2.103e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.06</p>
+<p> </p>
+<p>(4.503e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.81</p>
+<p> </p>
+<p>(7.680e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.239e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(3.254e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.15</p>
+<p> </p>
+<p>(3.746e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>7.25</p>
+<p> </p>
+<p>(2.358e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution">Cauchy Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.134e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.08</p>
+<p> </p>
+<p>(1.227e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution">Cauchy Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.203e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.203e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution">Chi
+ Squared Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.21</p>
+<p> </p>
+<p>(5.021e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.83</p>
+<p> </p>
+<p>(1.176e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.155e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution">Chi
+ Squared Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.930e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.72</p>
+<p> </p>
+<p>(5.243e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>5.73</p>
+<p> </p>
+<p>(1.106e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/exp_dist.html" title="Exponential Distribution">Exponential
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(3.798e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>5.89</p>
+<p> </p>
+<p>(2.236e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/exp_dist.html" title="Exponential Distribution">Exponential
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.41</p>
+<p> </p>
+<p>(9.006e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.380e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/f_dist.html" title="F Distribution">Fisher F Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(9.556e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.34</p>
+<p> </p>
+<p>(1.283e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.24</p>
+<p> </p>
+<p>(1.183e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/f_dist.html" title="F Distribution">Fisher F Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.987e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.33</p>
+<p> </p>
+<p>(9.325e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.16</p>
+<p> </p>
+<p>(2.205e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution">Gamma Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.52</p>
+<p> </p>
+<p>(6.240e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.11</p>
+<p> </p>
+<p>(1.279e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.111e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution">Gamma Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.24</p>
+<p> </p>
+<p>(2.179e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>6.25</p>
+<p> </p>
+<p>(1.102e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.764e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution">hypergeometric
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.60[2]</p>
+<p> </p>
+<p>(5.987e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.665e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution">hypergeometric
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.684e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.53</p>
+<p> </p>
+<p>(2.004e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/logistic_dist.html" title="Logistic Distribution">Logistic
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.714e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>5.24</p>
+<p> </p>
+<p>(8.984e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/logistic_dist.html" title="Logistic Distribution">Logistic
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.02</p>
+<p> </p>
+<p>(2.084e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.043e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution">Log-normal
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(3.579e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.49</p>
+<p> </p>
+<p>(5.332e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution">Log-normal
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(9.622e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.57</p>
+<p> </p>
+<p>(1.507e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.227e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.25</p>
+<p> </p>
+<p>(1.403e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.21</p>
+<p> </p>
+<p>(1.378e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(8.594e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>43.43[3]</p>
+<p> </p>
+<p>(3.732e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.48</p>
+<p> </p>
+<p>(2.994e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">Noncentral
+ Chi Squared Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.16</p>
+<p> </p>
+<p>(3.926e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>79.93</p>
+<p> </p>
+<p>(1.450e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.814e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">Noncentral
+ Chi Squared Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>5.00</p>
+<p> </p>
+<p>(3.393e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>393.90[4]</p>
+<p> </p>
+<p>(2.673e-002s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.786e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution">Noncentral
+ F Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.59</p>
+<p> </p>
+<p>(1.128e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(7.087e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.274e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution">Noncentral
+ F Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.750e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.62</p>
+<p> </p>
+<p>(7.681e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.274e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution">noncentral
+ T distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.41</p>
+<p> </p>
+<p>(1.852e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.436e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution">noncentral
+ T distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.31</p>
+<p> </p>
+<p>(5.768e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span>[5]</p>
+<p> </p>
+<p>(4.411e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution">Normal Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(8.373e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.68</p>
+<p> </p>
+<p>(1.409e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>6.01</p>
+<p> </p>
+<p>(5.029e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution">Normal Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.29</p>
+<p> </p>
+<p>(1.521e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.182e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>10.85</p>
+<p> </p>
+<p>(1.283e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/poisson_dist.html" title="Poisson Distribution">Poisson
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.18</p>
+<p> </p>
+<p>(5.193e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.98</p>
+<p> </p>
+<p>(1.314e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.410e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/poisson_dist.html" title="Poisson Distribution">Poisson
+ Distribution</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.203e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.20</p>
+<p> </p>
+<p>(2.642e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>7.86</p>
+<p> </p>
+<p>(9.457e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/students_t_dist.html" title="Students t Distribution">Students
+ t Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(8.655e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.06</p>
+<p> </p>
+<p>(9.166e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.04</p>
+<p> </p>
+<p>(8.999e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/students_t_dist.html" title="Students t Distribution">Students
+ t Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.294e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.36</p>
+<p> </p>
+<p>(3.131e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>4.82</p>
+<p> </p>
+<p>(1.106e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/weibull_dist.html" title="Weibull Distribution">Weibull
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.865e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.33</p>
+<p> </p>
+<p>(4.341e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/weibull_dist.html" title="Weibull Distribution">Weibull
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(3.608e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.22</p>
+<p> </p>
+<p>(4.410e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+</tbody>
+<tbody class="footnotes"><tr><td colspan="4">
+<div id="ftn.math_toolkit.comparisons.f2" class="footnote"><p>[1]
+ There are a small number of our test cases where the R library
+ fails to converge on a result: these tend to dominate the performance
+ result.
+ </p></div>
+<div id="ftn.math_toolkit.comparisons.f3" class="footnote"><p>[2]
+ This result is somewhat misleading: for small values of the parameters
+ there is virtually no difference between the two libraries, but
+ for large values the Boost implementation is <span class="emphasis"><em>much</em></span>
+ slower, albeit with much improved precision.
+ </p></div>
+<div id="ftn.math_toolkit.comparisons.f4" class="footnote"><p>[3]
+ The R library appears to use a linear-search strategy, that can
+ perform very badly in a small number of pathological cases, but
+ may or may not be more efficient in "typical" cases
+ </p></div>
+<div id="ftn.math_toolkit.comparisons.f5" class="footnote"><p>[4]
+ There are a small number of our test cases where the R library
+ fails to converge on a result: these tend to dominate the performance
+ result.
+ </p></div>
+<div id="ftn.math_toolkit.comparisons.f6" class="footnote"><p>[5]
+ There are a small number of our test cases where the R library
+ fails to converge on a result: these tend to dominate the performance
+ result.
+ </p></div>
+</td></tr></tbody>
+</table></div>
+</div>
+<br class="table-break"><h4>
+<a name="math_toolkit.comparisons.h2"></a>
+ <span class="phrase"><a name="math_toolkit.comparisons.comparison_to_the_r_statistical_"></a></span><a class="link" href="comparisons.html#math_toolkit.comparisons.comparison_to_the_r_statistical_">Comparison
+ to the R Statistical Library on Linux</a>
+ </h4>
+<p>
+ All the results were measured on a 2.0GHz Intel T5800 Core 2 Duo, 4Gb RAM,
+ Ubuntu Linux 9 machine, with the test program and R-2.9.2 compiled with GNU
+ G++ 4.3.3 using -O3 -DNDEBUG=1.
+ </p>
+<div class="table">
+<a name="math_toolkit.comparisons.a_comparison_to_the_r_statistic0"></a><p class="title"><b>Table 14.6. A Comparison to the R Statistical Library on Linux</b></p>
+<div class="table-contents"><table class="table" summary="A Comparison to the R Statistical Library on Linux">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Statistical Function
+ </p>
+ </th>
+<th>
+ <p>
+ Boost
+ </p>
+ </th>
+<th>
+ <p>
+ R
+ </p>
+ </th>
+<th>
+ <p>
+ DCDFLIB
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/beta_dist.html" title="Beta Distribution">Beta Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.09</p>
+<p> </p>
+<p>(3.189e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.526e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.19</p>
+<p> </p>
+<p>(1.822e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/beta_dist.html" title="Beta Distribution">Beta Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.185e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>30.51[1]</p>
+<p> </p>
+<p>(3.616e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.52</p>
+<p> </p>
+<p>(2.989e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>4.41</p>
+<p> </p>
+<p>(9.175e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.59</p>
+<p> </p>
+<p>(7.476e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.081e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.57</p>
+<p> </p>
+<p>(6.925e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.407e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>7.43</p>
+<p> </p>
+<p>(3.274e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution">Cauchy Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.594e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.04</p>
+<p> </p>
+<p>(1.654e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution">Cauchy Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.21</p>
+<p> </p>
+<p>(1.752e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.448e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution">Chi
+ Squared Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.61</p>
+<p> </p>
+<p>(1.376e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.36</p>
+<p> </p>
+<p>(1.243e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.270e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution">Chi
+ Squared Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.252e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.34</p>
+<p> </p>
+<p>(5.700e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.47</p>
+<p> </p>
+<p>(1.477e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/exp_dist.html" title="Exponential Distribution">Exponential
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.342e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.25</p>
+<p> </p>
+<p>(1.677e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/exp_dist.html" title="Exponential Distribution">Exponential
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(8.827e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.07</p>
+<p> </p>
+<p>(9.470e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/f_dist.html" title="F Distribution">Fisher F Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.62</p>
+<p> </p>
+<p>(2.324e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.19</p>
+<p> </p>
+<p>(1.711e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.437e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/f_dist.html" title="F Distribution">Fisher F Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.53</p>
+<p> </p>
+<p>(1.577e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.033e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.63</p>
+<p> </p>
+<p>(2.719e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution">Gamma Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.18</p>
+<p> </p>
+<p>(1.582e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.63</p>
+<p> </p>
+<p>(1.309e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.980e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/gamma_dist.html" title="Gamma (and Erlang) Distribution">Gamma Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.19</p>
+<p> </p>
+<p>(4.770e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>6.94</p>
+<p> </p>
+<p>(1.513e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.179e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution">hypergeometric
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.20[2]</p>
+<p> </p>
+<p>(3.522e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.601e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/hypergeometric_dist.html" title="Hypergeometric Distribution">hypergeometric
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(8.279e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.57</p>
+<p> </p>
+<p>(2.125e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/logistic_dist.html" title="Logistic Distribution">Logistic
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(9.398e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.75</p>
+<p> </p>
+<p>(2.588e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/logistic_dist.html" title="Logistic Distribution">Logistic
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(9.893e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.30</p>
+<p> </p>
+<p>(1.285e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution">Log-normal
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.831e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.39</p>
+<p> </p>
+<p>(2.539e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/lognormal_dist.html" title="Log Normal Distribution">Log-normal
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.10</p>
+<p> </p>
+<p>(5.551e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.037e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.08</p>
+<p> </p>
+<p>(1.563e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.444e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.444e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.700e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>25.92[3]</p>
+<p> </p>
+<p>(4.407e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.93</p>
+<p> </p>
+<p>(3.274e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">Noncentral
+ Chi Squared Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>5.06</p>
+<p> </p>
+<p>(2.841e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>25.01</p>
+<p> </p>
+<p>(1.405e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.617e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">Noncentral
+ Chi Squared Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>8.47</p>
+<p> </p>
+<p>(1.879e-003s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>144.91[4]</p>
+<p> </p>
+<p>(3.214e-002s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.218e-004s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution">Noncentral
+ F Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>10.33</p>
+<p> </p>
+<p>(5.868e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.42</p>
+<p> </p>
+<p>(8.058e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.682e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution">Noncentral
+ F Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>5.64</p>
+<p> </p>
+<p>(7.869e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>6.63</p>
+<p> </p>
+<p>(9.256e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.396e-004s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution">noncentral
+ T distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>4.91</p>
+<p> </p>
+<p>(3.357e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(6.844e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution">noncentral
+ T distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.57</p>
+<p> </p>
+<p>(9.265e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span>[5]</p>
+<p> </p>
+<p>(5.916e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution">Normal Distribution</a>
+ CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.074e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.16</p>
+<p> </p>
+<p>(1.245e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>5.36</p>
+<p> </p>
+<p>(5.762e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution">Normal Distribution</a>
+ Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.28</p>
+<p> </p>
+<p>(1.902e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.490e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>10.35</p>
+<p> </p>
+<p>(1.542e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/poisson_dist.html" title="Poisson Distribution">Poisson
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.43</p>
+<p> </p>
+<p>(1.198e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.25</p>
+<p> </p>
+<p>(1.110e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.937e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/poisson_dist.html" title="Poisson Distribution">Poisson
+ Distribution</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.11</p>
+<p> </p>
+<p>(3.032e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.724e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>4.07</p>
+<p> </p>
+<p>(1.110e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/students_t_dist.html" title="Students t Distribution">Students
+ t Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>2.17</p>
+<p> </p>
+<p>(2.020e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(9.321e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.10</p>
+<p> </p>
+<p>(1.021e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/students_t_dist.html" title="Students t Distribution">Students
+ t Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.18</p>
+<p> </p>
+<p>(3.972e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(3.364e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>3.89</p>
+<p> </p>
+<p>(1.308e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/weibull_dist.html" title="Weibull Distribution">Weibull
+ Distribution</a> CDF
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(3.662e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.04</p>
+<p> </p>
+<p>(3.808e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="dist_ref/dists/weibull_dist.html" title="Weibull Distribution">Weibull
+ Distribution</a> Quantile
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.112e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.05</p>
+<p> </p>
+<p>(4.317e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ NA
+ </p>
+ </td>
+</tr>
+</tbody>
+<tbody class="footnotes"><tr><td colspan="4">
+<div id="ftn.math_toolkit.comparisons.f7" class="footnote"><p>[1]
+ There are a small number of our test cases where the R library
+ fails to converge on a result: these tend to dominate the performance
+ result.
+ </p></div>
+<div id="ftn.math_toolkit.comparisons.f8" class="footnote"><p>[2]
+ This result is somewhat misleading: for small values of the parameters
+ there is virtually no difference between the two libraries, but
+ for large values the Boost implementation is <span class="emphasis"><em>much</em></span>
+ slower, albeit with much improved precision.
+ </p></div>
+<div id="ftn.math_toolkit.comparisons.f9" class="footnote"><p>[3]
+ The R library appears to use a linear-search strategy, that can
+ perform very badly in a small number of pathological cases, but
+ may or may not be more efficient in "typical" cases
+ </p></div>
+<div id="ftn.math_toolkit.comparisons.f10" class="footnote"><p>[4]
+ There are a small number of our test cases where the R library
+ fails to converge on a result: these tend to dominate the performance
+ result.
+ </p></div>
+<div id="ftn.math_toolkit.comparisons.f11" class="footnote"><p>[5]
+ There are a small number of our test cases where the R library
+ fails to converge on a result: these tend to dominate the performance
+ result.
+ </p></div>
+</td></tr></tbody>
+</table></div>
+</div>
+<br class="table-break">
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="tuning.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="perf_test_app.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/compile_time.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/compile_time.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Compile time GCD and LCM determination</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="run_time.html" title="Run-time GCD & LCM Determination">
+<link rel="next" href="gcd_header.html" title="Header <boost/math/common_factor.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="run_time.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="gcd_header.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_compile_time">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.compile_time"></a><a class="link" href="compile_time.html" title="Compile time GCD and LCM determination">Compile time GCD and LCM determination</a>
+</h2></div></div></div>
+<p>
+ <span class="bold"><strong>Header: </strong></span> <boost/math/common_factor_ct.hpp>
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">static_gcd_type</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span> <span class="identifier">static_gcd_type</span> <span class="identifier">Value1</span><span class="special">,</span> <span class="identifier">static_gcd_type</span> <span class="identifier">Value2</span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">static_gcd</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special"><</span><span class="identifier">static_gcd_type</span><span class="special">,</span> <span class="identifier">implementation_defined</span><span class="special">></span>
+<span class="special">{</span>
+<span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special"><</span> <span class="identifier">static_gcd_type</span> <span class="identifier">Value1</span><span class="special">,</span> <span class="identifier">static_gcd_type</span> <span class="identifier">Value2</span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">static_lcm</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special"><</span><span class="identifier">static_gcd_type</span><span class="special">,</span> <span class="identifier">implementation_defined</span><span class="special">></span>
+<span class="special">{</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The type <code class="computeroutput"><span class="identifier">static_gcd_type</span></code> is
+ the widest unsigned-integer-type that is supported for use in integral-constant-expressions
+ by the compiler. Usually this the same type as <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span></code>,
+ but may fall back to being <code class="computeroutput"><span class="keyword">unsigned</span>
+ <span class="keyword">long</span></code> for some older compilers.
+ </p>
+<p>
+ The boost::math::static_gcd and boost::math::static_lcm class templates take
+ two value-based template parameters of the <span class="emphasis"><em>static_gcd_type</em></span>
+ type and inherit from the type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span></code>. Inherited from the base class,
+ they have a member <span class="emphasis"><em>value</em></span> that is the greatest common factor
+ or least common multiple, respectively, of the template arguments. A compile-time
+ error will occur if the least common multiple is beyond the range of <code class="computeroutput"><span class="identifier">static_gcd_type</span></code>.
+ </p>
+<h4>
+<a name="math_toolkit.compile_time.h0"></a>
+ <span class="phrase"><a name="math_toolkit.compile_time.example"></a></span><a class="link" href="compile_time.html#math_toolkit.compile_time.example">Example</a>
+ </h4>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">common_factor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">algorithm</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iterator</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"The GCD and LCM of 6 and 15 are "</span>
+ <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gcd</span><span class="special">(</span><span class="number">6</span><span class="special">,</span> <span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" and "</span>
+ <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lcm</span><span class="special">(</span><span class="number">6</span><span class="special">,</span> <span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="string">", respectively."</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"The GCD and LCM of 8 and 9 are "</span>
+ <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">static_gcd</span><span class="special"><</span><span class="number">8</span><span class="special">,</span> <span class="number">9</span><span class="special">>::</span><span class="identifier">value</span>
+ <span class="special"><<</span> <span class="string">" and "</span>
+ <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">static_lcm</span><span class="special"><</span><span class="number">8</span><span class="special">,</span> <span class="number">9</span><span class="special">>::</span><span class="identifier">value</span>
+ <span class="special"><<</span> <span class="string">", respectively."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">int</span> <span class="identifier">a</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">4</span><span class="special">,</span> <span class="number">5</span><span class="special">,</span> <span class="number">6</span> <span class="special">},</span> <span class="identifier">b</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">7</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="number">9</span> <span class="special">},</span> <span class="identifier">c</span><span class="special">[</span><span class="number">3</span><span class="special">];</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">a</span> <span class="special">+</span> <span class="number">3</span><span class="special">,</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gcd_evaluator</span><span class="special"><</span><span class="keyword">int</span><span class="special">>()</span> <span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">c</span> <span class="special">+</span> <span class="number">3</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream_iterator</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">cout</span><span class="special">,</span> <span class="string">" "</span><span class="special">)</span> <span class="special">);</span>
+<span class="special">}</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="run_time.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="gcd_header.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/compilers_overview.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/compilers_overview.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,673 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Compilers</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="error_handling.html" title="Error Handling">
+<link rel="next" href="config_macros.html" title="Configuration Macros">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="error_handling.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="config_macros.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_compilers_overview">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.compilers_overview"></a><a class="link" href="compilers_overview.html" title="Compilers">Compilers</a>
+</h2></div></div></div>
+<p>
+ This section contains some information about how various compilers work with
+ this library. It is not comprehensive and updated experiences are always welcome.
+ Some effort has been made to suppress unhelpful warnings but it is difficult
+ to achieve this on all systems.
+ </p>
+<div class="table">
+<a name="math_toolkit.compilers_overview.supported_tested_compilers"></a><p class="title"><b>Table 1.9. Supported/Tested Compilers</b></p>
+<div class="table-contents"><table class="table" summary="Supported/Tested Compilers">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Platform
+ </p>
+ </th>
+<th>
+ <p>
+ Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Has long double support
+ </p>
+ </th>
+<th>
+ <p>
+ Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Windows
+ </p>
+ </td>
+<td>
+ <p>
+ MSVC 7.1 and later
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ We aim to keep our headers warning free at level 4 with this compiler.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Windows
+ </p>
+ </td>
+<td>
+ <p>
+ Intel 8.1 and later
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ We aim to keep our headers warning free at level 4 with this compiler.
+ However, The tests cases tend to generate a lot of warnings relating
+ to numeric underflow of the test data: these are harmless.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Windows
+ </p>
+ </td>
+<td>
+ <p>
+ GNU Mingw32 C++
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ We aim to keep our headers warning free with -Wall with this compiler.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Windows
+ </p>
+ </td>
+<td>
+ <p>
+ GNU Cygwin C++
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ We aim to keep our headers warning free with -Wall with this compiler.
+ </p>
+ <p>
+ Long double support has been disabled because there are no native
+ long double C std library functions available.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Windows
+ </p>
+ </td>
+<td>
+ <p>
+ Borland C++ 5.8.2 (Developer studio 2006)
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ We have only partial compatability with this compiler:
+ </p>
+ <p>
+ Long double support has been disabled because the native long double
+ C standard library functions really only forward to the double versions.
+ This can result in unpredictable behaviour when using the long double
+ overloads: for example <code class="computeroutput"><span class="identifier">sqrtl</span></code>
+ applied to a finite value, can result in an infinite result.
+ </p>
+ <p>
+ Some functions still fail to compile, there are no known workarounds
+ at present.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Windows 7/Netbeans 7.2
+ </p>
+ </td>
+<td>
+ <p>
+ Clang 3.1
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Spot examples OK. Expect all tests to compile and run OK.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linux
+ </p>
+ </td>
+<td>
+ <p>
+ GNU C++ 3.4 and later
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ We aim to keep our headers warning free with -Wall with this compiler.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linux
+ </p>
+ </td>
+<td>
+ <p>
+ Clang 3.2
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linux
+ </p>
+ </td>
+<td>
+ <p>
+ Intel C++ 10.0 and later
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ We aim to keep our headers warning free with -Wall with this compiler.
+ However, The tests cases tend to generate a lot of warnings relating
+ to numeric underflow of the test data: these are harmless.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linux
+ </p>
+ </td>
+<td>
+ <p>
+ Intel C++ 8.1 and 9.1
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ Long double support has been disabled with these compiler releases
+ because calling the standard library long double math functions can
+ result in a segfault. The issue is Linux distribution and glibc version
+ specific and is Intel bug report #409291. Fully up to date releases
+ of Intel 9.1 (post version l_cc_c_9.1.046) shouldn't have this problem.
+ If you need long double support with this compiler, then comment
+ out the define of BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS at line
+ 55 of boost/math/tools/config.hpp.
+ </p>
+ <p>
+ We aim to keep our headers warning free with -Wall with this compiler.
+ However, The tests cases tend to generate a lot of warnings relating
+ to numeric underflow of the test data: these are harmless.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linux
+ </p>
+ </td>
+<td>
+ <p>
+ QLogic PathScale 3.0
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Some tests involving conceptual checks fail to build, otherwise there
+ appear to be no issues.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linux
+ </p>
+ </td>
+<td>
+ <p>
+ Sun Studio 12
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Some tests involving function overload resolution fail to build,
+ these issues should be rairly encountered in practice.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Solaris
+ </p>
+ </td>
+<td>
+ <p>
+ Sun Studio 12
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Some tests involving function overload resolution fail to build,
+ these issues should be rairly encountered in practice.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Solaris
+ </p>
+ </td>
+<td>
+ <p>
+ GNU C++ 4.x
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ We aim to keep our headers warning free with -Wall with this compiler.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ HP Tru64
+ </p>
+ </td>
+<td>
+ <p>
+ Compaq C++ 7.1
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ HP-UX Itanium
+ </p>
+ </td>
+<td>
+ <p>
+ HP aCC 6.x
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ Unfortunately this compiler emits quite a few warnings from libraries
+ upon which we depend (TR1, Array etc).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ HP-UX PA-RISC
+ </p>
+ </td>
+<td>
+ <p>
+ GNU C++ 3.4
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Apple Mac OS X, Intel
+ </p>
+ </td>
+<td>
+ <p>
+ Darwin/GNU C++ 4.x
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Apple Mac OS X, PowerPC
+ </p>
+ </td>
+<td>
+ <p>
+ Darwin/GNU C++ 4.x
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ All tests OK.
+ </p>
+ <p>
+ Long double support has been disabled on this platform due to the
+ rather strange nature of Darwin's 106-bit long double implementation.
+ It should be possible to make this work if someone is prepared to
+ offer assistance.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Apple Mac OS X,
+ </p>
+ </td>
+<td>
+ <p>
+ Clang 3.2
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests expected to be OK.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ IBM AIX
+ </p>
+ </td>
+<td>
+ <p>
+ IBM xlc 5.3
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ All tests pass except for our fpclassify tests which fail due to
+ a bug in <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>, the bug effects
+ the test code, not fpclassify itself. The IBM compiler group are
+ aware of the problem.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.compilers_overview.unsupported_compilers"></a><p class="title"><b>Table 1.10. Unsupported Compilers</b></p>
+<div class="table-contents"><table class="table" summary="Unsupported Compilers">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Platform
+ </p>
+ </th>
+<th>
+ <p>
+ Compiler
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Windows
+ </p>
+ </td>
+<td>
+ <p>
+ Borland C++ 5.9.2 (Borland Developer Studio 2007)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Windows
+ </p>
+ </td>
+<td>
+ <p>
+ MSVC 6 and 7
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ If your compiler or platform is not listed above, please try running the regression
+ tests: cd into boost-root/libs/math/test and do a:
+ </p>
+<pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">mytoolset</span>
+</pre>
+<p>
+ where "mytoolset" is the name of the Boost.Build
+ toolset used for your compiler. The chances are that <span class="bold"><strong>many
+ of the accuracy tests will fail at this stage</strong></span> - don't panic - the
+ default acceptable error tolerances are quite tight, especially for long double
+ types with an extended exponent range (these cause more extreme test cases
+ to be executed for some functions). You will need to cast an eye over the output
+ from the failing tests and make a judgement as to whether the error rates are
+ acceptable or not.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="error_handling.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="config_macros.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/complex_history.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/complex_history.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,44 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>History</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+<link rel="prev" href="atanh.html" title="atanh">
+<link rel="next" href="../quaternions.html" title="Chapter 8. Quaternions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="atanh.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../quaternions.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_complex_history">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.complex_history"></a><a class="link" href="complex_history.html" title="History">History</a>
+</h2></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ 2005/12/17: Added support for platforms with no meaningful numeric_limits<>::infinity().
+ </li>
+<li class="listitem">
+ 2005/12/01: Initial version, added as part of the TR1 library.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="atanh.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../quaternions.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/complex_implementation.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/complex_implementation.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Implementation and Accuracy</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+<link rel="prev" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+<link rel="next" href="asin.html" title="asin">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../inverse_complex.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="asin.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_complex_implementation">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.complex_implementation"></a><a class="link" href="complex_implementation.html" title="Implementation and Accuracy">Implementation and
+ Accuracy</a>
+</h2></div></div></div>
+<p>
+ Although there are deceptively simple formulae available for all of these functions,
+ a naive implementation that used these formulae would fail catastrophically
+ for some input values. The Boost versions of these functions have been implemented
+ using the methodology described in "Implementing the Complex Arcsine and
+ Arccosine Functions Using Exception Handling" by T. E. Hull Thomas F.
+ Fairgrieve and Ping Tak Peter Tang, ACM Transactions on Mathematical Software,
+ Vol. 23, No. 3, September 1997. This means that the functions are well defined
+ over the entire complex number range, and produce accurate values even at the
+ extremes of that range, where as a naive formula would cause overflow or underflow
+ to occur during the calculation, even though the result is actually a representable
+ value. The maximum theoretical relative error for all of these functions is
+ less than 9.5ε for every machine-representable point in the complex plane. Please
+ refer to comments in the header files themselves and to the above mentioned
+ paper for more information on the implementation methodology.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../inverse_complex.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inverse_complex.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="asin.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/concepts.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/concepts.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,1360 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Conceptual Requirements for Real Number Types</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../using_udt.html" title="Chapter 12. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others">
+<link rel="prev" href="high_precision/using_test.html" title="Using without expression templates for Boost.Test and others">
+<link rel="next" href="dist_concept.html" title="Conceptual Requirements for Distribution Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="high_precision/using_test.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../using_udt.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="dist_concept.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_concepts">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.concepts"></a><a class="link" href="concepts.html" title="Conceptual Requirements for Real Number Types">Conceptual Requirements for Real
+ Number Types</a>
+</h2></div></div></div>
+<p>
+ The functions, and statistical distributions in this library can be used with
+ any type <span class="emphasis"><em>RealType</em></span> that meets the conceptual requirements
+ given below. All the built-in floating-point types will meet these requirements.
+ User-defined types that meet the requirements can also be used.
+ </p>
+<p>
+ For example, with <a class="link" href="high_precision/use_ntl.html" title="Using NTL Library">a thin
+ wrapper class</a> one of the types provided with <a href="http://shoup.net/ntl/" target="_top">NTL
+ (RR)</a> can be used. But now that Boost.Multiprecision
+ library is available, this has become the reference real number type.
+ </p>
+<p>
+ Submissions of binding to other extended precision types would also still be
+ welcome.
+ </p>
+<p>
+ The guiding principal behind these requirements is that a <span class="emphasis"><em>RealType</em></span>
+ behaves just like a built-in floating-point type.
+ </p>
+<h5>
+<a name="math_toolkit.concepts.h0"></a>
+ <span class="phrase"><a name="math_toolkit.concepts.basic_arithmetic_requirements"></a></span><a class="link" href="concepts.html#math_toolkit.concepts.basic_arithmetic_requirements">Basic
+ Arithmetic Requirements</a>
+ </h5>
+<p>
+ These requirements are common to all of the functions in this library.
+ </p>
+<p>
+ In the following table <span class="emphasis"><em>r</em></span> is an object of type <code class="computeroutput"><span class="identifier">RealType</span></code>, <span class="emphasis"><em>cr</em></span> and <span class="emphasis"><em>cr2</em></span>
+ are objects of type <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">RealType</span></code>,
+ and <span class="emphasis"><em>ca</em></span> is an object of type <code class="computeroutput"><span class="keyword">const</span>
+ <span class="identifier">arithmetic</span><span class="special">-</span><span class="identifier">type</span></code> (arithmetic types include all the built
+ in integers and floating point types).
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+<th>
+ <p>
+ Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">RealType</span><span class="special">(</span><span class="identifier">cr</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ RealType is copy constructible.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">RealType</span><span class="special">(</span><span class="identifier">ca</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ RealType is copy constructible from the arithmetic types.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Assignment operator.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Assignment operator from the arithmetic types.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">+=</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Adds cr to r.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">+=</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Adds ar to r.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">-=</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Subtracts cr from r.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">-=</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Subtracts ca from r.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">*=</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Multiplies r by cr.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">*=</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Multiplies r by ca.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">/=</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Divides r by cr.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">/=</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Divides r by ca.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special">-</span><span class="identifier">r</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Unary Negation.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special">+</span><span class="identifier">r</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType&
+ </p>
+ </td>
+<td>
+ <p>
+ Identity Operation.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">+</span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Addition
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">+</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Addition
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special">+</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Addition
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">-</span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Subtraction
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">-</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Subtraction
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special">-</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Subtraction
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">*</span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Multiplication
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">*</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Multiplication
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special">*</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Multiplication
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">/</span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Subtraction
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">/</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Subtraction
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special">/</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Subtraction
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">==</span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Equality Comparison
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">==</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Equality Comparison
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special">==</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Equality Comparison
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">!=</span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Inequality Comparison
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">!=</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Inequality Comparison
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special">!=</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Inequality Comparison
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special"><=</span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Less than equal to.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special"><=</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Less than equal to.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special"><=</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Less than equal to.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">>=</span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Greater than equal to.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">>=</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Greater than equal to.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special">>=</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Greater than equal to.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special"><</span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Less than comparison.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special"><</span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Less than comparison.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special"><</span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Less than comparison.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">></span>
+ <span class="identifier">cr2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Greater than comparison.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cr</span> <span class="special">></span>
+ <span class="identifier">ca</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Greater than comparison.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ca</span> <span class="special">></span>
+ <span class="identifier">cr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Greater than comparison.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">digits</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ int
+ </p>
+ </td>
+<td>
+ <p>
+ The number of digits in the significand of RealType.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">max_value</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ The largest representable number by type RealType.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">min_value</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ The smallest representable number by type RealType.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">log_max_value</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ The natural logarithm of the largest representable number by type
+ RealType.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">log_min_value</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ The natural logarithm of the smallest representable number by type
+ RealType.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">epsilon</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ The machine epsilon of RealType.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Note that:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ The functions <code class="computeroutput"><span class="identifier">log_max_value</span></code>
+ and <code class="computeroutput"><span class="identifier">log_min_value</span></code> can be
+ synthesised from the others, and so no explicit specialisation is required.
+ </li>
+<li class="listitem">
+ The function <code class="computeroutput"><span class="identifier">epsilon</span></code> can
+ be synthesised from the others, so no explicit specialisation is required
+ provided the precision of RealType does not vary at runtime (see the header
+ boost/math/bindings/rr.hpp
+ for an example where the precision does vary at runtime).
+ </li>
+<li class="listitem">
+ The functions <code class="computeroutput"><span class="identifier">digits</span></code>,
+ <code class="computeroutput"><span class="identifier">max_value</span></code> and <code class="computeroutput"><span class="identifier">min_value</span></code>, all get synthesised automatically
+ from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>. However, if <code class="computeroutput"><span class="identifier">numeric_limits</span></code> is not specialised for
+ type RealType, then you will get a compiler error when code tries to use
+ these functions, <span class="emphasis"><em>unless</em></span> you explicitly specialise
+ them. For example if the precision of RealType varies at runtime, then
+ <code class="computeroutput"><span class="identifier">numeric_limits</span></code> support
+ may not be appropriate, see boost/math/bindings/rr.hpp
+ for examples.
+ </li>
+</ol></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ If <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><></span></code>
+ is <span class="bold"><strong>not specialized</strong></span> for type <span class="emphasis"><em>RealType</em></span>
+ then the default float precision of 6 decimal digits will be used by other
+ Boost programs including:
+ </p>
+<p>
+ Boost.Test: giving misleading error messages like
+ </p>
+<p>
+ <span class="emphasis"><em>"difference between {9.79796} and {9.79796} exceeds 5.42101e-19%".</em></span>
+ </p>
+<p>
+ Boost.LexicalCast and Boost.Serialization when converting the number to a
+ string, causing potentially serious loss of accuracy on output.
+ </p>
+<p>
+ Although it might seem obvious that RealType should require <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
+ to be specialized, this is not sensible for <code class="computeroutput"><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span></code> and
+ similar classes where the number of digits is a runtime parameter (where
+ as for <code class="computeroutput"><span class="identifier">numeric_limits</span></code> it
+ has to be fixed at compile time).
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.concepts.h1"></a>
+ <span class="phrase"><a name="math_toolkit.concepts.standard_library_support_require"></a></span><a class="link" href="concepts.html#math_toolkit.concepts.standard_library_support_require">Standard Library
+ Support Requirements</a>
+ </h5>
+<p>
+ Many (though not all) of the functions in this library make calls to standard
+ library functions, the following table summarises the requirements. Note that
+ most of the functions in this library will only call a small subset of the
+ functions listed here, so if in doubt whether a user defined type has enough
+ standard library support to be useable the best advise is to try it and see!
+ </p>
+<p>
+ In the following table <span class="emphasis"><em>r</em></span> is an object of type <code class="computeroutput"><span class="identifier">RealType</span></code>, <span class="emphasis"><em>cr1</em></span> and <span class="emphasis"><em>cr2</em></span>
+ are objects of type <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">RealType</span></code>,
+ and <span class="emphasis"><em>i</em></span> is an object of type <code class="computeroutput"><span class="keyword">int</span></code>.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">fabs</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ceil</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">floor</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">exp</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pow</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">,</span>
+ <span class="identifier">cr2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">log</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">frexp</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">,</span>
+ <span class="special">&</span><span class="identifier">i</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ldexp</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">,</span>
+ <span class="identifier">i</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cos</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sin</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">asin</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tan</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">atan</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">fmod</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">round</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">iround</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ int
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">trunc</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">itrunc</span><span class="special">(</span><span class="identifier">cr1</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ int
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Note that the table above lists only those standard library functions known
+ to be used (or likely to be used in the near future) by this library. The following
+ functions: <code class="computeroutput"><span class="identifier">acos</span></code>, <code class="computeroutput"><span class="identifier">atan2</span></code>, <code class="computeroutput"><span class="identifier">fmod</span></code>,
+ <code class="computeroutput"><span class="identifier">cosh</span></code>, <code class="computeroutput"><span class="identifier">sinh</span></code>,
+ <code class="computeroutput"><span class="identifier">tanh</span></code>, <code class="computeroutput"><span class="identifier">log10</span></code>,
+ <code class="computeroutput"><span class="identifier">lround</span></code>, <code class="computeroutput"><span class="identifier">llround</span></code>,
+ <code class="computeroutput"><span class="identifier">ltrunc</span></code>, <code class="computeroutput"><span class="identifier">lltrunc</span></code>
+ and <code class="computeroutput"><span class="identifier">modf</span></code> are not currently
+ used, but may be if further special functions are added.
+ </p>
+<p>
+ Note that the <code class="computeroutput"><span class="identifier">round</span></code>, <code class="computeroutput"><span class="identifier">trunc</span></code> and <code class="computeroutput"><span class="identifier">modf</span></code>
+ functions are not part of the current C++ standard: they are part of the additions
+ added to C99 which will likely be in the next C++ standard. There are Boost
+ versions of these provided as a backup, and the functions are always called
+ unqualified so that argument-dependent-lookup can take place.
+ </p>
+<p>
+ In addition, for efficient and accurate results, a <a class="link" href="lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> is highly desirable. You may be able to adapt an existing
+ approximation from boost/math/special_functions/lanczos.hpp
+ or boost/math/bindings/detail/big_lanczos.hpp:
+ in the former case you will need change static_cast's to lexical_cast's, and
+ the constants to <span class="emphasis"><em>strings</em></span> (in order to ensure the coefficients
+ aren't truncated to long double) and then specialise <code class="computeroutput"><span class="identifier">lanczos_traits</span></code>
+ for type T. Otherwise you may have to hack libs/math/tools/lanczos_generator.cpp
+ to find a suitable approximation for your RealType. The code will still compile
+ if you don't do this, but both accuracy and efficiency will be greatly compromised
+ in any function that makes use of the gamma/beta/erf family of functions.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="high_precision/using_test.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../using_udt.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="dist_concept.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/config_macros.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/config_macros.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,398 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Configuration Macros</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="compilers_overview.html" title="Compilers">
+<link rel="next" href="intro_pol_overview.html" title="Policies">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="compilers_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="intro_pol_overview.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_config_macros">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.config_macros"></a><a class="link" href="config_macros.html" title="Configuration Macros">Configuration Macros</a>
+</h2></div></div></div>
+<p>
+ Almost all configuration details are set up automatically by <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">math</span><span class="special">\</span><span class="identifier">tools</span><span class="special">\</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>.
+ </p>
+<p>
+ In normal use, only policy configuration macros are likely to be used. See
+ <a class="link" href="pol_ref.html" title="Policy Reference">policy reference</a>.
+ </p>
+<p>
+ For reference, information on Boost.Math macros used internally are described
+ briefly below.
+ </p>
+<div class="table">
+<a name="math_toolkit.config_macros.boost_math_macros"></a><p class="title"><b>Table 1.11. Boost.Math Macros</b></p>
+<div class="table-contents"><table class="table" summary="Boost.Math Macros">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ MACRO
+ </p>
+ </th>
+<th>
+ <p>
+ Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_NO_REAL_CONCEPT_TESTS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Do not try to use real concept tests (hardware or software does not
+ support real_concept type).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Do not produce or use long double functions: this macro gets set
+ when the platform's long double or standard library long double support
+ is absent or buggy.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_CONTROL_FP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Controls FP hardware exceptions - our tests don't support hardware
+ exceptions on MSVC. May get set to something like: <code class="computeroutput"> <span class="identifier">_control87</span><span class="special">(</span><span class="identifier">MCW_EM</span><span class="special">,</span><span class="identifier">MCW_EM</span><span class="special">)</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This macro is used by our test cases, it is set when an assignment
+ of a function template to a function pointer requires explicit template
+ arguments to be provided on the function name.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_USE_C99</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Use C99 math functions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ define if no native (or buggy) <code class="computeroutput"><span class="identifier">fpclassify</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">)</span></code>
+ even though the other C99 functions are present.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_EXPLICIT_TEMPLATE_TYPE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Workaround helper macro for broken compilers - composed from other
+ Boost.Config macros, do not edit.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Workaround helper macro for broken compilers - composed from other
+ Boost.Config macros, do not edit.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Workaround helper macro for broken compilers - composed from other
+ Boost.Config macros, do not edit.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Workaround helper macro for broken compilers - composed from other
+ Boost.Config macros, do not edit.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_SMALL_CONSTANT</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Helper macro used in our test cases to set underflowing constants
+ set to zero if this would cause compiler issues.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Set if constants too large for a float, will cause "bad"
+ values to be stored in the data, rather than infinity or a suitably
+ large value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_STD_USING</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Provides <code class="computeroutput"><span class="keyword">using</span></code> statements
+ for many std:: (abs to sqrt) and boost::math (rounds, modf) functions.
+ This allows these functions to be called unqualified so that if
+ <a href="http://en.wikipedia.org/wiki/Argument-dependent_name_lookup" target="_top">argument-dependent
+ Argument Dependent Lookup</a> fails to find a suitable overload,
+ then the std:: versions will also be considered.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_FPU_EXCEPTION_GUARD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Used at the entrypoint to each special function to reset all FPU
+ exception flags prior to internal calculations, and then merge the
+ old and new exception flags on function exit. Used as a workaround
+ on platforms or hardware that behave strangely if any FPU exception
+ flags are set when calling standard library functions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_INSTRUMENT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Define to output diagnostics for math functions. This is rather 'global'
+ to Boost.Math and so coarse-grained that it will probably produce
+ copious output! (Especially because full precision values are output).
+ Designed primarily for internal use and development.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_INSTRUMENT_CODE</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Output selected named variable, for example <code class="computeroutput"><span class="identifier">BOOST_MATH_INSTRUMENT_CODE</span><span class="special">(</span><span class="string">"guess = "</span>
+ <span class="special"><<</span> <span class="identifier">guess</span><span class="special">)</span></code>; Used by <code class="computeroutput"><span class="identifier">BOOST_MATH_INSTRUMENT</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_INSTRUMENT_VARIABLE</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Output selected variable, for example <code class="computeroutput"><span class="identifier">BOOST_MATH_INSTRUMENT_VARIABLE</span><span class="special">(</span><span class="identifier">result</span><span class="special">);</span></code> Used by <code class="computeroutput"><span class="identifier">BOOST_MATH_INSTRUMENT</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_INSTRUMENT_FPU</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Output the state of the FPU's control flags.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.config_macros.boost_math_tuning"></a><p class="title"><b>Table 1.12. Boost.Math Tuning</b></p>
+<div class="table-contents"><table class="table" summary="Boost.Math Tuning">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macros for Tuning performance options for specific compilers
+ </p>
+ </th>
+<th>
+ <p>
+ Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_POLY_METHOD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ See the <a class="link" href="tuning.html" title="Performance Tuning Macros">performance tuning section</a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_RATIONAL_METHOD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ See the <a class="link" href="tuning.html" title="Performance Tuning Macros">performance tuning section</a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_MAX_POLY_ORDER</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ See the <a class="link" href="tuning.html" title="Performance Tuning Macros">performance tuning section</a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_INT_TABLE_TYPE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ See the <a class="link" href="tuning.html" title="Performance Tuning Macros">performance tuning section</a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MATH_INT_VALUE_SUFFIX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Helper macro for appending the correct suffix to integer constants
+ which may actually be stored as reals depending on the value of BOOST_MATH_INT_TABLE_TYPE.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="compilers_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="intro_pol_overview.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/constants.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/constants.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,1480 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>The Mathematical Constants</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../constants.html" title="Chapter 6. Mathematical Constants">
+<link rel="prev" href="tutorial/user_def.html" title="Use With User-Defined Types">
+<link rel="next" href="new_const.html" title="Defining New Constants">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial/user_def.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="new_const.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_constants">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.constants"></a><a class="link" href="constants.html" title="The Mathematical Constants">The Mathematical Constants</a>
+</h2></div></div></div>
+<p>
+ This section lists the mathematical constants, their use(s) (and sometimes
+ rationale for their inclusion).
+ </p>
+<div class="table">
+<a name="math_toolkit.constants.mathematical_constants"></a><p class="title"><b>Table 6.1. Mathematical Constants</b></p>
+<div class="table-contents"><table class="table" summary="Mathematical Constants">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ name
+ </p>
+ </th>
+<th>
+ <p>
+ formula
+ </p>
+ </th>
+<th>
+ <p>
+ Value (6 decimals)
+ </p>
+ </th>
+<th>
+ <p>
+ Uses and Rationale
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>Rational fractions</strong></span>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ half
+ </p>
+ </td>
+<td>
+ <p>
+ 1/2
+ </p>
+ </td>
+<td>
+ <p>
+ 0.5
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ third
+ </p>
+ </td>
+<td>
+ <p>
+ 1/3
+ </p>
+ </td>
+<td>
+ <p>
+ 0.333333
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ two_thirds
+ </p>
+ </td>
+<td>
+ <p>
+ 2/3
+ </p>
+ </td>
+<td>
+ <p>
+ 0.66667
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ three_quarters
+ </p>
+ </td>
+<td>
+ <p>
+ 3/4
+ </p>
+ </td>
+<td>
+ <p>
+ 0.75
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>two and related</strong></span>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ root_two
+ </p>
+ </td>
+<td>
+ <p>
+ √2
+ </p>
+ </td>
+<td>
+ <p>
+ 1.41421
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ root_three
+ </p>
+ </td>
+<td>
+ <p>
+ √3
+ </p>
+ </td>
+<td>
+ <p>
+ 1.73205
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ half_root_two
+ </p>
+ </td>
+<td>
+ <p>
+ √2 /2
+ </p>
+ </td>
+<td>
+ <p>
+ 0.707106
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ln_two
+ </p>
+ </td>
+<td>
+ <p>
+ ln(2)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.693147
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ln_ten
+ </p>
+ </td>
+<td>
+ <p>
+ ln(10)
+ </p>
+ </td>
+<td>
+ <p>
+ 2.30258
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ln_ln_two
+ </p>
+ </td>
+<td>
+ <p>
+ ln(ln(2))
+ </p>
+ </td>
+<td>
+ <p>
+ -0.366512
+ </p>
+ </td>
+<td>
+ <p>
+ Gumbel distribution median
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ root_ln_four
+ </p>
+ </td>
+<td>
+ <p>
+ √ln(4)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.177410
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ one_div_root_two
+ </p>
+ </td>
+<td>
+ <p>
+ 1/√2
+ </p>
+ </td>
+<td>
+ <p>
+ 0.707106
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>π and related</strong></span>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pi
+ </p>
+ </td>
+<td>
+ <p>
+ pi
+ </p>
+ </td>
+<td>
+ <p>
+ 3.14159
+ </p>
+ </td>
+<td>
+ <p>
+ Ubiquitous. Archimedes constant π
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ half_pi
+ </p>
+ </td>
+<td>
+ <p>
+ π/2
+ </p>
+ </td>
+<td>
+ <p>
+ 1.570796
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ third_pi
+ </p>
+ </td>
+<td>
+ <p>
+ π/3
+ </p>
+ </td>
+<td>
+ <p>
+ 1.04719
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ sixth_pi
+ </p>
+ </td>
+<td>
+ <p>
+ π/6
+ </p>
+ </td>
+<td>
+ <p>
+ 0.523598
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ two_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 2π
+ </p>
+ </td>
+<td>
+ <p>
+ 6.28318
+ </p>
+ </td>
+<td>
+ <p>
+ Many uses, most simply, circumference of a circle
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ two_thirds_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 2/3 π
+ </p>
+ </td>
+<td>
+ <p>
+ 2.09439
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Sphere#Volume_of_a_sphere" target="_top">volume
+ of a hemi-sphere</a> = 4/3 π r³
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ three_quarters_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 3/4 π
+ </p>
+ </td>
+<td>
+ <p>
+ 2.35619
+ </p>
+ </td>
+<td>
+ <p>
+ = 3/4 π
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ four_thirds_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 4/3 π
+ </p>
+ </td>
+<td>
+ <p>
+ 4.18879
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Sphere#Volume_of_a_sphere" target="_top">volume
+ of a sphere</a> = 4/3 π r³
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ one_div_two_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 1/(2π)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.59155
+ </p>
+ </td>
+<td>
+ <p>
+ Widely used
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ root_pi
+ </p>
+ </td>
+<td>
+ <p>
+ √π
+ </p>
+ </td>
+<td>
+ <p>
+ 1.77245
+ </p>
+ </td>
+<td>
+ <p>
+ Widely used
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ root_half_pi
+ </p>
+ </td>
+<td>
+ <p>
+ √ π/2
+ </p>
+ </td>
+<td>
+ <p>
+ 1.25331
+ </p>
+ </td>
+<td>
+ <p>
+ Widely used
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ root_two_pi
+ </p>
+ </td>
+<td>
+ <p>
+ √ π*2
+ </p>
+ </td>
+<td>
+ <p>
+ 2.50662
+ </p>
+ </td>
+<td>
+ <p>
+ Widely used
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ one_div_root_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 1/√π
+ </p>
+ </td>
+<td>
+ <p>
+ 0.564189
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ one_div_root_two_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 1/√(2π)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.398942
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ root_one_div_pi
+ </p>
+ </td>
+<td>
+ <p>
+ √(1/π
+ </p>
+ </td>
+<td>
+ <p>
+ 0.564189
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pi_minus_three
+ </p>
+ </td>
+<td>
+ <p>
+ π-3
+ </p>
+ </td>
+<td>
+ <p>
+ 1.41593
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ four_minus_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 4 -π
+ </p>
+ </td>
+<td>
+ <p>
+ 0.858407
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pow23_four_minus_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 4<sup>2/3</sup> - π
+ </p>
+ </td>
+<td>
+ <p>
+ 0.795316
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pi_pow_e
+ </p>
+ </td>
+<td>
+ <p>
+ π<sup>e</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 22.4591
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pi_sqr
+ </p>
+ </td>
+<td>
+ <p>
+ π<sup>2</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 9.86960
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pi_sqr_div_six
+ </p>
+ </td>
+<td>
+ <p>
+ π<sup>2</sup>/6
+ </p>
+ </td>
+<td>
+ <p>
+ 1.64493
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pi_cubed
+ </p>
+ </td>
+<td>
+ <p>
+ π<sup>3</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 31.00627
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cbrt_pi
+ </p>
+ </td>
+<td>
+ <p>
+ √<sup>3</sup> π
+ </p>
+ </td>
+<td>
+ <p>
+ 1.46459
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ one_div_cbrt_pi
+ </p>
+ </td>
+<td>
+ <p>
+ 1/√<sup>3</sup> π
+ </p>
+ </td>
+<td>
+ <p>
+ 0.682784
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>Euler's e and related</strong></span>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ e
+ </p>
+ </td>
+<td>
+ <p>
+ e
+ </p>
+ </td>
+<td>
+ <p>
+ 2.71828
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/E_(mathematical_constant)" target="_top">Euler's
+ constant e</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ exp_minus_half
+ </p>
+ </td>
+<td>
+ <p>
+ e <sup>-1/2</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 0.606530
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ e_pow_pi
+ </p>
+ </td>
+<td>
+ <p>
+ e <sup>π</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 23.14069
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ root_e
+ </p>
+ </td>
+<td>
+ <p>
+ √ e
+ </p>
+ </td>
+<td>
+ <p>
+ 1.64872
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ log10_e
+ </p>
+ </td>
+<td>
+ <p>
+ log10(e)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.434294
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ one_div_log10_e
+ </p>
+ </td>
+<td>
+ <p>
+ 1/log10(e)
+ </p>
+ </td>
+<td>
+ <p>
+ 2.30258
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>Trigonometric</strong></span>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ degree
+ </p>
+ </td>
+<td>
+ <p>
+ radians = π / 180
+ </p>
+ </td>
+<td>
+ <p>
+ 0.017453
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ radian
+ </p>
+ </td>
+<td>
+ <p>
+ degrees = 180 / π
+ </p>
+ </td>
+<td>
+ <p>
+ 57.2957
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ sin_one
+ </p>
+ </td>
+<td>
+ <p>
+ sin(1)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.841470
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cos_one
+ </p>
+ </td>
+<td>
+ <p>
+ cos(1)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.54030
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ sinh_one
+ </p>
+ </td>
+<td>
+ <p>
+ sinh(1)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.17520
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cosh_one
+ </p>
+ </td>
+<td>
+ <p>
+ cosh(1)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.54308
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>Phi</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Phidias golden ratio
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Golden_ratio" target="_top">Phidias golden
+ ratio</a>
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ phi
+ </p>
+ </td>
+<td>
+ <p>
+ (1 + √5) /2
+ </p>
+ </td>
+<td>
+ <p>
+ 1.61803
+ </p>
+ </td>
+<td>
+ <p>
+ finance
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ln_phi
+ </p>
+ </td>
+<td>
+ <p>
+ ln(φ)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.48121
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ one_div_ln_phi
+ </p>
+ </td>
+<td>
+ <p>
+ 1/ln(φ)
+ </p>
+ </td>
+<td>
+ <p>
+ 2.07808
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>Euler's Gamma</strong></span>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ euler
+ </p>
+ </td>
+<td>
+ <p>
+ euler
+ </p>
+ </td>
+<td>
+ <p>
+ 0.577215
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Euler%E2%80%93Mascheroni_constant" target="_top">Euler-Mascheroni
+ gamma constant</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ one_div_euler
+ </p>
+ </td>
+<td>
+ <p>
+ 1/euler
+ </p>
+ </td>
+<td>
+ <p>
+ 1.73245
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ euler_sqr
+ </p>
+ </td>
+<td>
+ <p>
+ euler<sup>2</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 0.333177
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>Misc</strong></span>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ zeta_two
+ </p>
+ </td>
+<td>
+ <p>
+ ζ(2)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.64493
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Riemann_zeta_function" target="_top">Riemann
+ zeta function</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ zeta_three
+ </p>
+ </td>
+<td>
+ <p>
+ ζ(3)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.20205
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Riemann_zeta_function" target="_top">Riemann
+ zeta function</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ catalan
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>K</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ 0.915965
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://mathworld.wolfram.com/CatalansConstant.html" target="_top">Catalan
+ (or Glaisher) combinatorial constant</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ glaisher
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>A</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ 1.28242
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="https://oeis.org/A074962/constant" target="_top">Decimal expansion
+ of Glaisher-Kinkelin constant</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ khinchin
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>k</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ 2.685452
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="https://oeis.org/A002210/constant" target="_top">Decimal expansion
+ of Khinchin constant</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ extreme_value_skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 12√6 ζ(3)/ π<sup>3</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 1.139547
+ </p>
+ </td>
+<td>
+ <p>
+ Extreme value distribution
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ rayleigh_skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 2√π(π-3)/(4 - π)<sup>3/2</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 0.631110
+ </p>
+ </td>
+<td>
+ <p>
+ Rayleigh distribution skewness
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ rayleigh_kurtosis_excess
+ </p>
+ </td>
+<td>
+ <p>
+ -(6π<sup>2</sup>-24π+16)/(4-π)<sup>2</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 0.245089
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Rayleigh_distribution" target="_top">Rayleigh
+ distribution kurtosis excess</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ rayleigh_kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 3+(6π<sup>2</sup>-24π+16)/(4-π)<sup>2</sup>
+ </p>
+ </td>
+<td>
+ <p>
+ 3.245089
+ </p>
+ </td>
+<td>
+ <p>
+ Rayleigh distribution kurtosis
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Integer values are <span class="bold"><strong>not included</strong></span> in this
+ list of math constants, however interesting, because they can be so easily
+ and exactly constructed, even for UDT, for example: <code class="computeroutput"><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">cpp_float</span><span class="special">>(</span><span class="number">42</span><span class="special">)</span></code>.
+ </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="../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If you know the approximate value of the constant, you can search for the
+ value to find Boost.Math chosen name in this table.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="tutorial/user_def.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="new_const.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/constants_faq.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/constants_faq.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,473 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>FAQs</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../constants.html" title="Chapter 6. Mathematical Constants">
+<link rel="prev" href="new_const.html" title="Defining New Constants">
+<link rel="next" href="../inverse_complex.html" title="Chapter 7. Complex Number Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="new_const.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../inverse_complex.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_constants_faq">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.constants_faq"></a><a class="link" href="constants_faq.html" title="FAQs">FAQs</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.constants_faq.h0"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.why_are_these_constants_chosen"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.why_are_these_constants_chosen">Why are
+ <span class="emphasis"><em>these</em></span> Constants Chosen?</a>
+ </h5>
+<p>
+ It is, of course, impossible to please everyone with a list like this.
+ </p>
+<p>
+ Some of the criteria we have used are:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Used in Boost.Math.
+ </li>
+<li class="listitem">
+ Commonly used.
+ </li>
+<li class="listitem">
+ Expensive to compute.
+ </li>
+<li class="listitem">
+ Requested by users.
+ </li>
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/Mathematical_constant" target="_top">Used in
+ science and mathematics.</a>
+ </li>
+<li class="listitem">
+ No integer values (because so cheap to construct).<br> (You can easily
+ define your own if found convenient, for example: <code class="computeroutput"><span class="identifier">FPT</span>
+ <span class="identifier">one</span> <span class="special">=</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">FPT</span><span class="special">>(</span><span class="number">42</span><span class="special">);</span></code>).
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.constants_faq.h1"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.how_are_constants_named"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.how_are_constants_named">How
+ are constants named?</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Not macros, so no upper case.
+ </li>
+<li class="listitem">
+ All lower case (following C++ standard names).
+ </li>
+<li class="listitem">
+ No CamelCase.
+ </li>
+<li class="listitem">
+ Underscore as _ delimiter between words.
+ </li>
+<li class="listitem">
+ Numbers spelt as words rather than decimal digits (except following pow).
+ </li>
+<li class="listitem">
+ Abbreviation conventions:
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
+<li class="listitem">
+ root for square root.
+ </li>
+<li class="listitem">
+ cbrt for cube root.
+ </li>
+<li class="listitem">
+ pow for pow function using decimal digits like pow23 for n<sup>2/3</sup>.
+ </li>
+<li class="listitem">
+ div for divided by or operator /.
+ </li>
+<li class="listitem">
+ minus for operator -, plus for operator +.
+ </li>
+<li class="listitem">
+ sqr for squared.
+ </li>
+<li class="listitem">
+ cubed for cubed n<sup>3</sup>.
+ </li>
+<li class="listitem">
+ words for greek, like π, ζ and Γ.
+ </li>
+<li class="listitem">
+ words like half, third, three_quarters, sixth for fractions. (Digit(s)
+ can get muddled).
+ </li>
+<li class="listitem">
+ log10 for log<sub>10</sub>
+ </li>
+<li class="listitem">
+ ln for log<sub>e</sub>
+ </li>
+</ul></div>
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.constants_faq.h2"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.how_are_the_constants_derived"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.how_are_the_constants_derived">How are
+ the constants derived?</a>
+ </h5>
+<p>
+ The constants have all been calculated using high-precision software working
+ with up to 300-bit precision giving about 100 decimal digits. (The precision
+ can be arbitrarily chosen and is limited only by compute time).
+ </p>
+<h5>
+<a name="math_toolkit.constants_faq.h3"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.how_accurate_are_the_constants"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.how_accurate_are_the_constants">How Accurate
+ are the constants?</a>
+ </h5>
+<p>
+ The minimum accuracy chosen (100 decimal digits) exceeds the accuracy of reasonably-foreseeable
+ floating-point hardware (256-bit) and should meet most high-precision computations.
+ </p>
+<h5>
+<a name="math_toolkit.constants_faq.h4"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.how_are_the_constants_tested"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.how_are_the_constants_tested">How are the
+ constants tested?</a>
+ </h5>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Comparison using Boost.Test BOOST_CHECK_CLOSE_FRACTION using long double
+ literals, with at least 35 decimal digits, enough to be accurate for all
+ long double implementations. The tolerance is usually twice <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">epsilon</span></code>.
+ </li>
+<li class="listitem">
+ Comparison with calculation at long double precision. This often requires
+ a slightly higher tolerance than two epsilon because of computational noise
+ from round-off etc, especially when trig and other functions are called.
+ </li>
+<li class="listitem">
+ Comparison with independent published values, for example, using The On-Line Encyclopedia of Integer Sequences (OEIS)
+ again using at least 35 decimal digits strings.
+ </li>
+<li class="listitem">
+ Comparison with independely calculated values using arbitrary precision
+ tools like Mathematica,
+ again using at least 35 decimal digits literal strings.
+ </li>
+</ol></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ We have not yet been able to <span class="bold"><strong>check</strong></span> that
+ <span class="bold"><strong>all</strong></span> constants are accurate at the full arbitrary
+ precision, at present 100 decimal digits. But certain key values like <code class="computeroutput"><span class="identifier">e</span></code> and <code class="computeroutput"><span class="identifier">pi</span></code>
+ appear to be accurate and internal consistencies suggest that others are
+ this accurate too.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.constants_faq.h5"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.why_is_portability_important"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.why_is_portability_important">Why is Portability
+ important?</a>
+ </h5>
+<p>
+ Code written using math constants is easily portable even when using different
+ floating-point types with differing precision.
+ </p>
+<p>
+ It is a mistake to expect that results of computations will be <span class="bold"><strong>identical</strong></span>,
+ but you can achieve the <span class="bold"><strong>best accuracy possible for the
+ floating-point type in use</strong></span>.
+ </p>
+<p>
+ This has no extra cost to the user, but reduces irritating, and often confusing
+ and very hard-to-trace effects, caused by the intrinsically limited precision
+ of floating-point calculations.
+ </p>
+<p>
+ A harmless symptom of this limit is a spurious least-significant digit; at
+ worst, slightly inaccurate constants sometimes cause iterating algorithms to
+ diverge wildly because internal comparisons just fail.
+ </p>
+<h5>
+<a name="math_toolkit.constants_faq.h6"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.what_is_the_internal_format_of_t"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.what_is_the_internal_format_of_t">What
+ is the Internal Format of the constants, and why?</a>
+ </h5>
+<p>
+ See <a class="link" href="tutorial.html" title="Tutorial">tutorial</a> above for normal
+ use, but this FAQ explains the internal details used for the constants.
+ </p>
+<p>
+ Constants are stored as 100 decimal digit values. However, some compilers do
+ not accept decimal digits strings as long as this. So the constant is split
+ into two parts, with the first containing at least 128-bit long double precision
+ (35 decimal digits), and for consistency should be in scientific format with
+ a signed exponent.
+ </p>
+<p>
+ The second part is the value of the constant expressed as a string literal,
+ accurate to at least 100 decimal digits (in practice that means at least 102
+ digits). Again for consistency use scientific format with a signed exponent.
+ </p>
+<p>
+ For types with precision greater than a long double, then if T is constructible
+ <code class="computeroutput"><span class="identifier">T</span> </code>is constructible from a
+ <code class="computeroutput"><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span></code> then it's directly constructed from the string,
+ otherwise we fall back on lexical_cast to convert to type <code class="computeroutput"><span class="identifier">T</span></code>.
+ (Using a string is necessary because you can't use a numeric constant since
+ even a <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ might not have enough digits).
+ </p>
+<p>
+ So, for example, a constant like pi is internally defined as
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_DEFINE_MATH_CONSTANT</span><span class="special">(</span><span class="identifier">pi</span><span class="special">,</span> <span class="number">3.141592653589793238462643383279502884e+00</span><span class="special">,</span> <span class="string">"3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651e+00"</span><span class="special">);</span>
+</pre>
+<p>
+ In this case the significand is 109 decimal digits, ensuring 100 decimal digits
+ are exact, and exponent is zero.
+ </p>
+<p>
+ See <a class="link" href="new_const.html" title="Defining New Constants">defining new constants</a> to
+ calculate new constants.
+ </p>
+<p>
+ A macro definition like this can be pasted into user code where convenient,
+ or into <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span></code> if it
+ is to be added to the Boost.Math library.
+ </p>
+<h5>
+<a name="math_toolkit.constants_faq.h7"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.what_floating_point_types_could_"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.what_floating_point_types_could_">What
+ Floating-point Types could I use?</a>
+ </h5>
+<p>
+ Apart from the built-in floating-point types <code class="computeroutput"><span class="keyword">float</span></code>,
+ <code class="computeroutput"><span class="keyword">double</span></code>, <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>, there are several arbitrary
+ precision floating-point classes available, but most are not licensed for commercial
+ use.
+ </p>
+<h6>
+<a name="math_toolkit.constants_faq.h8"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.boost_multiprecision_by_christop"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.boost_multiprecision_by_christop">Boost.Multiprecision
+ by Christopher Kormanyos</a>
+ </h6>
+<p>
+ This work is based on an earlier work called e-float: Algorithm 910: A Portable
+ C++ Multiple-Precision System for Special-Function Calculations, in ACM TOMS,
+ {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+ e_float
+ but is now re-factored and available under the Boost license in the Boost-sandbox
+ at multiprecision
+ where it is being refined and prepared for review.
+ </p>
+<h6>
+<a name="math_toolkit.constants_faq.h9"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.boost_cpp_float_by_john_maddock_"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.boost_cpp_float_by_john_maddock_">Boost.cpp_float
+ by John Maddock using Expression Templates</a>
+ </h6>
+<p>
+ Big Number
+ which is a reworking of e_float
+ by Christopher Kormanyos to use expression templates for faster execution.
+ </p>
+<h6>
+<a name="math_toolkit.constants_faq.h10"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.ntl_class_quad_float"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.ntl_class_quad_float">NTL
+ class quad_float</a>
+ </h6>
+<p>
+ NTL by Victor Shoup has fixed and
+ arbitrary high precision fixed and floating-point types. However none of these
+ are licenced for commercial use.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">NTL</span><span class="special">/</span><span class="identifier">quad_float</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span> <span class="comment">// quad precision 106-bit, about 32 decimal digits.</span>
+<span class="keyword">using</span> <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">to_quad_float</span><span class="special">;</span> <span class="comment">// Less precise than arbitrary precision NTL::RR.</span>
+</pre>
+<p>
+ NTL class <code class="computeroutput"><span class="identifier">quad_float</span></code>, which
+ gives a form of quadruple precision, 106-bit significand (but without an extended
+ exponent range.) With an IEC559/IEEE 754 compatible processor, for example
+ Intel X86 family, with 64-bit double, and 53-bit significand, using the significands
+ of <span class="bold"><strong>two</strong></span> 64-bit doubles, if <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">digits10</span></code> is 16, then we get about twice the
+ precision, so <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">quad_float</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">()</span></code>
+ should be 32. (the default <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">RR</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">()</span></code>
+ should be about 40). (which seems to agree with experiments). We output constants
+ (including some noisy bits, an approximation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">RR</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">()</span></code>)
+ by adding 2 extra decimal digits, so using <code class="computeroutput"><span class="identifier">quad_float</span><span class="special">::</span><span class="identifier">SetOutputPrecision</span><span class="special">(</span><span class="number">32</span> <span class="special">+</span>
+ <span class="number">2</span><span class="special">);</span></code>
+ </p>
+<p>
+ Apple Mac/Darwin uses a similar <span class="emphasis"><em>doubledouble</em></span> 106-bit for
+ its built-in <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ type.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The precision of all <code class="computeroutput"><span class="identifier">doubledouble</span></code>
+ floating-point types is rather odd and values given are only approximate.
+ </p></td></tr>
+</table></div>
+<p>
+ <span class="bold"><strong>New projects should use Boost.Multiprecision.</strong></span>
+ </p>
+<h6>
+<a name="math_toolkit.constants_faq.h11"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.ntl_class_rr"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.ntl_class_rr">NTL
+ class RR</a>
+ </h6>
+<p>
+ Arbitrary precision floating point with NTL class RR, default is 150 bit (about
+ 50 decimal digits) used here with 300 bit to output 100 decimal digits, enough
+ for many practical non-'number-theoretic' C++ applications.
+ </p>
+<p>
+ NTL A Library for doing Number Theory
+ is <span class="bold"><strong>not licenced for commercial use</strong></span>.
+ </p>
+<p>
+ This class is used in Boost.Math and is an option when using big_number projects
+ to calculate new math constants.
+ </p>
+<p>
+ <span class="bold"><strong>New projects should use Boost.Multiprecision.</strong></span>
+ </p>
+<h6>
+<a name="math_toolkit.constants_faq.h12"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.gmp_and_mpfr"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.gmp_and_mpfr">GMP
+ and MPFR</a>
+ </h6>
+<p>
+ GMP and MPFR
+ have also been used to compute constants, but are licensed under the Lesser GPL license and
+ are <span class="bold"><strong>not licensed for commercial use</strong></span>.
+ </p>
+<h5>
+<a name="math_toolkit.constants_faq.h13"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.what_happened_to_a_previous_coll"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.what_happened_to_a_previous_coll">What
+ happened to a previous collection of constants proposed for Boost?</a>
+ </h5>
+<p>
+ A review concluded that the way in which the constants were presented did not
+ meet many peoples needs. None of the methods proposed met many users' essential
+ requirement to allow writing simply <code class="computeroutput"><span class="identifier">pi</span></code>
+ rather than <code class="computeroutput"><span class="identifier">pi</span><span class="special">()</span></code>.
+ Many science and engineering equations look difficult to read when because
+ function call brackets can be confused with the many other brackets often needed.
+ All the methods then proposed of avoiding the brackets failed to meet all needs,
+ often on grounds of complexity and lack of applicability to various realistic
+ scenarios.
+ </p>
+<p>
+ So the simple namespace method, proposed on its own, but rejected at the first
+ review, has been added to allow users to have convenient access to float, double
+ and long double values, but combined with template struct and functions to
+ allow simultaneous use with other non-built-in floating-point types.
+ </p>
+<h5>
+<a name="math_toolkit.constants_faq.h14"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.why_do_the_constants_internally_"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.why_do_the_constants_internally_">Why do
+ the constants (internally) have a struct rather than a simple function?</a>
+ </h5>
+<p>
+ A function mechanism was provided by in previous versions of Boost.Math.
+ </p>
+<p>
+ The new mechanism is to permit partial specialization. See Custom Specializing
+ a constant above. It should also allow use with other packages like ttmath Bignum C++ library.
+ </p>
+<h5>
+<a name="math_toolkit.constants_faq.h15"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.where_can_i_find_other_high_prec"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.where_can_i_find_other_high_prec">Where
+ can I find other high precision constants?</a>
+ </h5>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Constants with very high precision and good accuracy (>40 decimal digits)
+ from Simon Plouffe's web based collection http://pi.lacim.uqam.ca/eng/.
+ </li>
+<li class="listitem">
+ <a href="https://oeis.org/" target="_top">The On-Line Encyclopedia of Integer Sequences
+ (OEIS)</a>
+ </li>
+<li class="listitem">
+ Checks using printed text optically scanned values and converted from:
+ D. E. Knuth, Art of Computer Programming, Appendix A, Table 1, Vol 1, ISBN
+ 0 201 89683 4 (1997)
+ </li>
+<li class="listitem">
+ M. Abrahamovitz & I. E. Stegun, National Bureau of Standards, Handbook
+ of Mathematical Functions, a reference source for formulae now superceded
+ by
+ </li>
+<li class="listitem">
+ Frank W. Olver, Daniel W. Lozier, Ronald F. Boisvert, Charles W. Clark,
+ NIST Handbook of Mathemetical Functions, Cambridge University Press, ISBN
+ 978-0-521-14063-8, 2010.
+ </li>
+<li class="listitem">
+ John F Hart, Computer Approximations, Kreiger (1978) ISBN 0 88275 642 7.
+ </li>
+<li class="listitem">
+ Some values from Cephes Mathematical Library, Stephen L. Moshier and CALC100
+ 100 decimal digit Complex Variable Calculator Program, a DOS utility.
+ </li>
+<li class="listitem">
+ Xavier Gourdon, Pascal Sebah, 50 decimal digits constants at <a href="http://numbers.computation.free.fr/Constants/constants.html" target="_top">Number,
+ constants and computation</a>.
+ </li>
+</ol></div>
+<h5>
+<a name="math_toolkit.constants_faq.h16"></a>
+ <span class="phrase"><a name="math_toolkit.constants_faq.where_are_physical_constants"></a></span><a class="link" href="constants_faq.html#math_toolkit.constants_faq.where_are_physical_constants">Where are
+ Physical Constants?</a>
+ </h5>
+<p>
+ Not here in this Boost.Math collection, because physical constants:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Are measurements, not truely constants.
+ </li>
+<li class="listitem">
+ Are not truly constant and keeping changing as mensuration technology improves.
+ </li>
+<li class="listitem">
+ Have a instrinsic uncertainty.
+ </li>
+<li class="listitem">
+ Mathematical constants are stored and represented at varying precision,
+ but should never be inaccurate.
+ </li>
+</ul></div>
+<p>
+ Some physical constants may be available in Boost.Units.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="new_const.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../inverse_complex.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/constants_intro.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/constants_intro.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,120 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Introduction</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../constants.html" title="Chapter 6. Mathematical Constants">
+<link rel="prev" href="../constants.html" title="Chapter 6. Mathematical Constants">
+<link rel="next" href="tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../constants.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_constants_intro">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.constants_intro"></a><a class="link" href="constants_intro.html" title="Introduction">Introduction</a>
+</h2></div></div></div>
+<p>
+ Boost.Math provides a collection of mathematical constants.
+ </p>
+<h5>
+<a name="math_toolkit.constants_intro.h0"></a>
+ <span class="phrase"><a name="math_toolkit.constants_intro.why_use_boost_math_mathematical_"></a></span><a class="link" href="constants_intro.html#math_toolkit.constants_intro.why_use_boost_math_mathematical_">Why
+ use Boost.Math mathematical constants?</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <p>
+ Readable. For the very many jobs just using built-in like <code class="computeroutput"><span class="keyword">double</span></code>, you can just write expressions
+ like
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">area</span> <span class="special">=</span> <span class="identifier">pi</span> <span class="special">*</span> <span class="identifier">r</span> <span class="special">*</span> <span class="identifier">r</span><span class="special">;</span></pre>
+ (If that's all you want, jump direct to <a class="link" href="tutorial/non_templ.html" title="Use in non-template code">use
+ in non-template code</a>!)
+ </li>
+<li class="listitem">
+ Effortless - avoiding a search of reference sources.
+ </li>
+<li class="listitem">
+ Usable with both builtin floating point types, and user-defined, possibly
+ extended precision, types such as NTL, MPFR/GMP, mp_float: in the latter
+ case the constants are computed to the necessary precision and then cached.
+ </li>
+<li class="listitem">
+ Accurate - ensuring that the values are as accurate as possible for the
+ chosen floating-point type
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
+<li class="listitem">
+ No loss of accuracy from repeated rounding of intermediate computations.
+ </li>
+<li class="listitem">
+ Result is computed with higher precision and only rounded once.
+ </li>
+<li class="listitem">
+ Less risk of inaccurate result from functions pow, trig and log at
+ corner cases.
+ </li>
+<li class="listitem">
+ Less risk of <a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html" target="_top">cancellation
+ error</a>.
+ </li>
+</ul></div>
+ </li>
+<li class="listitem">
+ Portable - as possible between different systems using different floating-point
+ precisions: see <a class="link" href="tutorial/templ.html" title="Use in template code">use in template
+ code</a>.
+ </li>
+<li class="listitem">
+ Tested - by comparison with other published sources, or separately computed
+ at long double precision.
+ </li>
+<li class="listitem">
+ Faster - can avoid (re-)calculation at runtime.
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
+<li class="listitem">
+ If the value returned is a builtin type then it's returned by value
+ as a <code class="computeroutput"><span class="keyword">constexpr</span></code> (C++11
+ feature, if available).
+ </li>
+<li class="listitem">
+ If the value is computed and cached (or constructed from a string
+ representation and cached), then it's returned by constant reference.<br>
+ This can be significant if:
+ </li>
+<li class="listitem">
+ Functions pow, trig or log are used.
+ </li>
+<li class="listitem">
+ Inside an inner loop.
+ </li>
+<li class="listitem">
+ Using a high-precision UDT like Boost.Multiprecision.
+ </li>
+<li class="listitem">
+ Compiler optimizations possible with built-in types, especially
+ <code class="computeroutput"><span class="keyword">double</span></code>, are not available.
+ </li>
+</ul></div>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../constants.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/contact.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/contact.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Contact Info and Support</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="main_faq.html" title="Frequently Asked Questions FAQ">
+<link rel="next" href="../dist.html" title="Chapter 2. Statistical Distributions and Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="main_faq.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../dist.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_contact">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.contact"></a><a class="link" href="contact.html" title="Contact Info and Support">Contact Info and Support</a>
+</h2></div></div></div>
+<p>
+ The main support for this library is via the Boost mailing lists:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Use the <a href="http://www.boost.org/more/mailing_lists.htm#users" target="_top">boost-user
+ list</a> for general support questions.
+ </li>
+<li class="listitem">
+ Use the <a href="http://www.boost.org/more/mailing_lists.htm#main" target="_top">boost-developer
+ list</a> for discussion about implementation and or submission of extensions.
+ </li>
+</ul></div>
+<p>
+ You can also find JM at john - at - johnmaddock.co.uk and PAB at pbristow -
+ at - hetp.u-net.com.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="main_faq.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../dist.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/conventions.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/conventions.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Document Conventions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. 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">
+<div class="spirit-nav">
+<a accesskey="p" href="navigation.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="hints.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_conventions">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.conventions"></a><a class="link" href="conventions.html" title="Document Conventions">Document Conventions</a>
+</h2></div></div></div>
+<p>
+ <a class="indexterm" name="id861024"></a>
+ </p>
+<p>
+ This documentation aims to use of the following naming and formatting conventions.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-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"><></span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special"><></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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="hints.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/create.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/create.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,111 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quaternion Creation Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="value_op.html" title="Quaternion Value Operations">
+<link rel="next" href="trans.html" title="Quaternion Transcendentals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="value_op.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="trans.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_create">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.create"></a><a class="link" href="create.html" title="Quaternion Creation Functions">Quaternion Creation Functions</a>
+</h2></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">spherical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&a
mp;</span> <span class="identifier">phi2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">semipolar</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="id
entifier">theta2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">multipolar</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="i
dentifier">theta2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">cylindrospherical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">radius</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">longitude</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span
class="identifier">latitude</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">cylindrical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">angle</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identi
fier">h2</span><span class="special">);</span>
+</pre>
+<p>
+ These build quaternions in a way similar to the way polar builds complex numbers,
+ as there is no strict equivalent to polar coordinates for quaternions.
+ </p>
+<p>
+ <a name="math_quaternions.creation_spherical"></a><code class="computeroutput"><span class="identifier">spherical</span></code>
+ is a simple transposition of <code class="computeroutput"><span class="identifier">polar</span></code>,
+ it takes as inputs a (positive) magnitude and a point on the hypersphere, given
+ by three angles. The first of these, <code class="computeroutput"><span class="identifier">theta</span></code>
+ has a natural range of <code class="computeroutput"><span class="special">-</span><span class="identifier">pi</span></code>
+ to <code class="computeroutput"><span class="special">+</span><span class="identifier">pi</span></code>,
+ and the other two have natural ranges of <code class="computeroutput"><span class="special">-</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code>
+ to <code class="computeroutput"><span class="special">+</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code> (as is the
+ case with the usual spherical coordinates in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>).
+ Due to the many symmetries and periodicities, nothing untoward happens if the
+ magnitude is negative or the angles are outside their natural ranges. The expected
+ degeneracies (a magnitude of zero ignores the angles settings...) do happen
+ however.
+ </p>
+<p>
+ <a name="math_quaternions.creation_cylindrical"></a><code class="computeroutput"><span class="identifier">cylindrical</span></code>
+ is likewise a simple transposition of the usual cylindrical coordinates in
+ <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>, which in turn is another
+ derivative of planar polar coordinates. The first two inputs are the polar
+ coordinates of the first <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span>
+ component of the quaternion. The third and fourth inputs are placed into the
+ third and fourth <span class="emphasis"><em><span class="bold"><strong>R</strong></span></em></span> components
+ of the quaternion, respectively.
+ </p>
+<p>
+ <a name="math_quaternions.creation_multipolar"></a><code class="computeroutput"><span class="identifier">multipolar</span></code>
+ is yet another simple generalization of polar coordinates. This time, both
+ <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> components of the quaternion
+ are given in polar coordinates.
+ </p>
+<p>
+ <a name="math_quaternions.creation_cylindrospherical"></a><code class="computeroutput"><span class="identifier">cylindrospherical</span></code>
+ is specific to quaternions. It is often interesting to consider <span class="emphasis"><em><span class="bold"><strong>H</strong></span></em></span> as the cartesian product of <span class="emphasis"><em><span class="bold"><strong>R</strong></span></em></span> by <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>
+ (the quaternionic multiplication as then a special form, as given here). This
+ function therefore builds a quaternion from this representation, with the
+ <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span> component given in usual
+ <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span> spherical coordinates.
+ </p>
+<p>
+ <a name="math_quaternions.creation_semipolar"></a><code class="computeroutput"><span class="identifier">semipolar</span></code>
+ is another generator which is specific to quaternions. It takes as a first
+ input the magnitude of the quaternion, as a second input an angle in the range
+ <code class="computeroutput"><span class="number">0</span></code> to <code class="computeroutput"><span class="special">+</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code>
+ such that magnitudes of the first two <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span>
+ components of the quaternion are the product of the first input and the sine
+ and cosine of this angle, respectively, and finally as third and fourth inputs
+ angles in the range <code class="computeroutput"><span class="special">-</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code> to <code class="computeroutput"><span class="special">+</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code> which represent the arguments of the first
+ and second <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> components
+ of the quaternion, respectively. As usual, nothing untoward happens if what
+ should be magnitudes are negative numbers or angles are out of their natural
+ ranges, as symmetries and periodicities kick in.
+ </p>
+<p>
+ In this version of our implementation of quaternions, there is no analogue
+ of the complex value operation <code class="computeroutput"><span class="identifier">arg</span></code>
+ as the situation is somewhat more complicated. Unit quaternions are linked
+ both to rotations in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>
+ and in <span class="emphasis"><em><span class="bold"><strong>R<sup>4</sup></strong></span></em></span>, and the correspondences
+ are not too complicated, but there is currently a lack of standard (de facto
+ or de jure) matrix library with which the conversions could work. This should
+ be remedied in a further revision. In the mean time, an example of how this
+ could be done is presented here for R3, and here for R4 (<a href="../../../quaternion/HSO3SO4.cpp" target="_top">example
+ test file</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="value_op.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="trans.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/credits.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/credits.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,153 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Credits and Acknowledgements</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../status.html" title="Chapter 16. Library Status">
+<link rel="prev" href="issues.html" title="Known Issues, and TODO List">
+<link rel="next" href="../indexes.html" title="Chapter 17. Indexes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="issues.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../status.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../indexes.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_credits">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.credits"></a><a class="link" href="credits.html" title="Credits and Acknowledgements">Credits and Acknowledgements</a>
+</h2></div></div></div>
+<p>
+ Hubert Holin started the Boost.Math library. The Quaternions, Octonions, inverse
+ hyperbolic functions, and the sinus cardinal functions are his.
+ </p>
+<p>
+ Daryle Walker wrote the integer gcd and lcm functions.
+ </p>
+<p>
+ John Maddock started the special functions, the beta, gamma, erf, polynomial,
+ and factorial functions are his, as is the "Toolkit" section, and
+ many of the statistical distributions.
+ </p>
+<p>
+ Paul A. Bristow threw down the challenge in <a href="http://www2.open-std.org/JTC1/SC22/WG21/docs/papers/2004/n1668.pdf" target="_top">A
+ Proposal to add Mathematical Functions for Statistics to the C++ Standard Library</a>
+ to add the key math functions, especially those essential for statistics. After
+ JM accepted and solved the difficult problems, not only numerically, but in
+ full C++ template style, PAB implemented a few of the statistical distributions.
+ PAB also tirelessly proof-read everything that JM threw at him (so that all
+ remaining editorial mistakes are his fault).
+ </p>
+<p>
+ Xiaogang Zhang worked on the Bessel functions and elliptic integrals for his
+ Google Summer of Code project 2006.
+ </p>
+<p>
+ Bruno Lalande submitted the "compile time power of a runtime base"
+ code.
+ </p>
+<p>
+ Johan Råde wrote the optimised floating-point classification and manipulation
+ code, and nonfinite facets to permit C99 output of infinities and NaNs. (nonfinite
+ facets were not added until Boost 1.47 but had been in use with Boost.Spirit).
+ This library was based on a suggestion from Robert Ramey, author of Boost.Serialization.
+ Paul A. Bristow expressed the need for better handling of <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2022.pdf" target="_top">Input
+ & Output of NaN and infinity for the C++ Standard Library</a> and suggested
+ following the C99 format.
+ </p>
+<p>
+ Antony Polukhin improved lexical cast avoiding stringstream so that it was
+ no longer necessary to use a globale C99 facet to handle nonfinites.
+ </p>
+<p>
+ Håkan Ardö, Boris Gubenko, John Maddock, Markus Schöpflin and Olivier Verdier
+ tested the floating-point library and Martin Bonner, Peter Dimov and John Maddock
+ provided valuable advice.
+ </p>
+<p>
+ Gautam Sewani coded the logistic distribution as part of a Google Summer of
+ Code project 2008.
+ </p>
+<p>
+ M. A. (Thijs) van den Berg coded the Laplace distribution. (Thijs has also
+ threatened to implement some multivariate distributions).
+ </p>
+<p>
+ Thomas Mang requested the inverse gamma in chi squared distributions for Bayesian
+ applications and helped in their implementation, and provided a nice example
+ of their use.
+ </p>
+<p>
+ Professor Nico Temme for advice on the inverse incomplete beta function.
+ </p>
+<p>
+ Victor Shoup for NTL, without which
+ it would have much more difficult to produce high accuracy constants, and especially
+ the tables of accurate values for testing.
+ </p>
+<p>
+ We are grateful to Joel Guzman for helping us stress-test his Boost.Quickbook
+ program used to generate the html and pdf versions of this document, adding
+ several new features en route.
+ </p>
+<p>
+ Plots of the functions and distributions were prepared in W3C
+ standard Scalable Vector Graphic (SVG)
+ format using a program created by Jacob Voytko during a <a href="http://code.google.com/soc/2007/" target="_top">Google
+ Summer of Code (2007)</a>. From 2012, the latest versions of all Internet
+ Browsers have support for rendering SVG (with varying quality). Older versions,
+ especially (Microsoft Internet Explorer (before IE 9) lack native SVG support
+ but can be made to work with <a href="http://www.adobe.com/svg/viewer/install/" target="_top">Adobe's
+ free SVG viewer</a> plugin). The SVG files can be converted to JPEG or
+ PNG using Inkscape.
+ </p>
+<p>
+ We are also indebted to Matthias Schabel for managing the formal Boost-review
+ of this library, and to all the reviewers - including Guillaume Melquiond,
+ Arnaldur Gylfason, John Phillips, Stephan Tolksdorf and Jeff Garland - for
+ their many helpful comments.
+ </p>
+<p>
+ Thanks to Mark Coleman and Georgi Boshnakov for spot test values from Wolfram Mathematica,
+ and of course, to Eric Weisstein for nurturing <a href="http://mathworld.wolfram.com" target="_top">Wolfram
+ MathWorld</a>, an invaluable resource.
+ </p>
+<p>
+ The Skew-normal distribution and Owen's t function were written by Benjamin
+ Sobotta.
+ </p>
+<p>
+ We thank Thomas Mang for persuading us to allow t distributions to have infinite
+ degrees of freedom and contributing to some long discussions about how to improve
+ accuracy for large non-centrality and/or large degrees of freedom.
+ </p>
+<p>
+ Christopher Kormanyos wrote the e_float multiprecision library <a href="http://portal.acm.org/citation.cfm?id=1916469" target="_top">TOMS
+ Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function
+ Calculations</a> which formed the basis for the Boost.Multiprecision library
+ which now can be used to allow most functions and distributions to be computed
+ up to a precision of the users' choice, no longer restricted to built-in floating-point
+ types like double. (And thanks to Topher Cooper for bring Christopher's e_float
+ to our attention).
+ </p>
+<p>
+ Christopher Kormanyos wrote some examples for using Boost.Multiprecision,
+ and added methods for finding zeros of Bessel Functions.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="issues.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../status.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../indexes.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/demo.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/demo.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Demonstration Program</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="gcd_header.html" title="Header <boost/math/common_factor.hpp>">
+<link rel="next" href="rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="gcd_header.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_demo">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.demo"></a><a class="link" href="demo.html" title="Demonstration Program">Demonstration Program</a>
+</h2></div></div></div>
+<p>
+ The program common_factor_test.cpp
+ is a demonstration of the results from instantiating various examples of the
+ run-time GCD and LCM function templates and the compile-time GCD and LCM class
+ templates. (The run-time GCD and LCM class templates are tested indirectly
+ through the run-time function templates.)
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="gcd_header.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/directories.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/directories.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,117 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Directory and File Structure</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="hints.html" title="Other Hints and tips">
+<link rel="next" href="namespaces.html" title="Namespaces">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="hints.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="namespaces.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_directories">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.directories"></a><a class="link" href="directories.html" title="Directory and File Structure">Directory and File Structure</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.directories.h0"></a>
+ <span class="phrase"><a name="math_toolkit.directories.boost_math"></a></span><a class="link" href="directories.html#math_toolkit.directories.boost_math">boost/math</a>
+ </h5>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">/concepts/</span></dt>
+<dd><p>
+ Prototype defining the <span class="bold"><strong>essential</strong></span> features
+ of a RealType class (see real_concept.hpp). Most applications will use
+ <code class="computeroutput"><span class="keyword">double</span></code> as the RealType (and
+ short <code class="computeroutput"><span class="keyword">typedef</span></code> names of distributions
+ are reserved for this type where possible), a few will use <code class="computeroutput"><span class="keyword">float</span></code> or <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>, but it is also possible
+ to use higher precision types like NTL::RR,
+ GNU Multiple Precision Arithmetic Library,
+ GNU MPFR library that conform
+ to the requirements specified by real_concept.
+ </p></dd>
+<dt><span class="term">/constants/</span></dt>
+<dd><p>
+ Templated definition of some highly accurate math constants (in constants.hpp).
+ </p></dd>
+<dt><span class="term">/distributions/</span></dt>
+<dd><p>
+ Distributions used in mathematics and, especially, statistics: Gaussian,
+ Students-t, Fisher, Binomial etc
+ </p></dd>
+<dt><span class="term">/policies/</span></dt>
+<dd><p>
+ Policy framework, for handling user requested behaviour modifications.
+ </p></dd>
+<dt><span class="term">/special_functions/</span></dt>
+<dd><p>
+ Math functions generally regarded as 'special', like beta, cbrt, erf,
+ gamma, lgamma, tgamma ... (Some of these are specified in C++, and C99/TR1,
+ and perhaps TR2).
+ </p></dd>
+<dt><span class="term">/tools/</span></dt>
+<dd><p>
+ Tools used by functions, like evaluating polynomials, continued fractions,
+ root finding, precision and limits, and by tests. Some will find application
+ outside this package.
+ </p></dd>
+</dl>
+</div>
+<h5>
+<a name="math_toolkit.directories.h1"></a>
+ <span class="phrase"><a name="math_toolkit.directories.boost_libs"></a></span><a class="link" href="directories.html#math_toolkit.directories.boost_libs">boost/libs</a>
+ </h5>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">/doc/</span></dt>
+<dd><p>
+ Documentation source files in Quickbook format processed into html and
+ pdf formats.
+ </p></dd>
+<dt><span class="term">/examples/</span></dt>
+<dd><p>
+ Examples and demos of using math functions and distributions.
+ </p></dd>
+<dt><span class="term">/performance/</span></dt>
+<dd><p>
+ Performance testing and tuning program.
+ </p></dd>
+<dt><span class="term">/test/</span></dt>
+<dd><p>
+ Test files, in many .cpp files, most using Boost.Test (some with test
+ data as .ipp files, usually generated using NTL RR type with ample precision
+ for the type, often for precisions suitable for up to 256-bit significand
+ real types).
+ </p></dd>
+<dt><span class="term">/tools/</span></dt>
+<dd><p>
+ Programs used to generate test data. Also changes to the NTL
+ released package to provide a few additional (and vital) extra features.
+ </p></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="hints.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="namespaces.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_concept.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_concept.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,387 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Conceptual Requirements for Distribution Types</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../using_udt.html" title="Chapter 12. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others">
+<link rel="prev" href="concepts.html" title="Conceptual Requirements for Real Number Types">
+<link rel="next" href="archetypes.html" title="Conceptual Archetypes for Reals and Distributions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="concepts.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../using_udt.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="archetypes.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_concept">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.dist_concept"></a><a class="link" href="dist_concept.html" title="Conceptual Requirements for Distribution Types">Conceptual Requirements for
+ Distribution Types</a>
+</h2></div></div></div>
+<p>
+ A <span class="emphasis"><em>DistributionType</em></span> is a type that implements the following
+ conceptual requirements, and encapsulates a statistical distribution.
+ </p>
+<p>
+ Please note that this documentation should not be used as a substitute for
+ the <a class="link" href="dist_ref.html" title="Statistical Distributions Reference">reference documentation</a>, and
+ <a class="link" href="stat_tut.html" title="Statistical Distributions Tutorial">tutorial</a> of the statistical distributions.
+ </p>
+<p>
+ In the following table, <span class="emphasis"><em>d</em></span> is an object of type <code class="computeroutput"><span class="identifier">DistributionType</span></code>, <span class="emphasis"><em>cd</em></span>
+ is an object of type <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">DistributionType</span></code>
+ and <span class="emphasis"><em>cr</em></span> is an object of a type convertible to <code class="computeroutput"><span class="identifier">RealType</span></code>.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+<th>
+ <p>
+ Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ DistributionType::value_type
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ The real-number type <span class="emphasis"><em>RealType</em></span> upon which the
+ distribution operates.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ DistributionType::policy_type
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> to use when evaluating functions
+ that depend on this distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ d = cd
+ </p>
+ </td>
+<td>
+ <p>
+ Distribution&
+ </p>
+ </td>
+<td>
+ <p>
+ Distribution types are assignable.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distribution(cd)
+ </p>
+ </td>
+<td>
+ <p>
+ Distribution
+ </p>
+ </td>
+<td>
+ <p>
+ Distribution types are copy constructible.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pdf(cd, cr)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the PDF of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf(cd, cr)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the CDF of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf(complement(cd, cr))
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the complement of the CDF of the distribution, the same as:
+ <code class="computeroutput"><span class="number">1</span><span class="special">-</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">cd</span><span class="special">,</span> <span class="identifier">cr</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile(cd, cr)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the quantile (or percentile) of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile(complement(cd, cr))
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the quantile (or percentile) of the distribution, starting
+ from the complement of the probability, the same as: <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">cd</span><span class="special">,</span> <span class="number">1</span><span class="special">-</span><span class="identifier">cr</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ chf(cd, cr)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the cumulative hazard function of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ hazard(cd, cr)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the hazard function of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis(cd)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the kurtosis of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis_excess(cd)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the kurtosis excess of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean(cd)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the mean of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode(cd)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the mode of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness(cd)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the skewness of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ standard_deviation(cd)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the standard deviation of the distribution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance(cd)
+ </p>
+ </td>
+<td>
+ <p>
+ RealType
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the variance of the distribution.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="concepts.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../using_udt.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="archetypes.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Statistical Distributions Reference</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../dist.html" title="Chapter 2. Statistical Distributions and Functions">
+<link rel="prev" href="stat_tut/dist_params.html" title="Discrete Probability Distributions">
+<link rel="next" href="dist_ref/nmp.html" title="Non-Member Properties">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="stat_tut/dist_params.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="dist_ref/nmp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.dist_ref"></a><a class="link" href="dist_ref.html" title="Statistical Distributions Reference">Statistical Distributions Reference</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Non-Member Properties</span></dt>
+<dt><span class="section">Distributions</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="dist_ref/dists/bernoulli_dist.html">Bernoulli
+ Distribution</a></span></dt>
+<dt><span class="section">Beta Distribution</span></dt>
+<dt><span class="section"><a href="dist_ref/dists/binomial_dist.html">Binomial
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/cauchy_dist.html">Cauchy-Lorentz
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/chi_squared_dist.html">Chi Squared
+ Distribution</a></span></dt>
+<dt><span class="section">Exponential Distribution</span></dt>
+<dt><span class="section"><a href="dist_ref/dists/extreme_dist.html">Extreme Value
+ Distribution</a></span></dt>
+<dt><span class="section">F Distribution</span></dt>
+<dt><span class="section"><a href="dist_ref/dists/gamma_dist.html">Gamma (and
+ Erlang) Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/geometric_dist.html">Geometric
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/hypergeometric_dist.html">Hypergeometric
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/inverse_chi_squared_dist.html">Inverse
+ Chi Squared Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/inverse_gamma_dist.html">Inverse
+ Gamma Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/inverse_gaussian_dist.html">Inverse
+ Gaussian (or Inverse Normal) Distribution</a></span></dt>
+<dt><span class="section">Laplace Distribution</span></dt>
+<dt><span class="section"><a href="dist_ref/dists/logistic_dist.html">Logistic
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/lognormal_dist.html">Log Normal
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/negative_binomial_dist.html">Negative
+ Binomial Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/nc_beta_dist.html">Noncentral
+ Beta Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/nc_chi_squared_dist.html">Noncentral
+ Chi-Squared Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/nc_f_dist.html">Noncentral F
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/nc_t_dist.html">Noncentral T
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/normal_dist.html">Normal (Gaussian)
+ Distribution</a></span></dt>
+<dt><span class="section">Pareto Distribution</span></dt>
+<dt><span class="section">Poisson Distribution</span></dt>
+<dt><span class="section">Rayleigh Distribution</span></dt>
+<dt><span class="section"><a href="dist_ref/dists/skew_normal_dist.html">Skew
+ Normal Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/students_t_dist.html">Students
+ t Distribution</a></span></dt>
+<dt><span class="section"><a href="dist_ref/dists/triangular_dist.html">Triangular
+ Distribution</a></span></dt>
+<dt><span class="section">Uniform Distribution</span></dt>
+<dt><span class="section">Weibull Distribution</span></dt>
+</dl></dd>
+<dt><span class="section">Distribution Algorithms</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="stat_tut/dist_params.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="dist_ref/nmp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dist_algorithms.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dist_algorithms.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,126 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Distribution Algorithms</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../dist_ref.html" title="Statistical Distributions Reference">
+<link rel="prev" href="dists/weibull_dist.html" title="Weibull Distribution">
+<link rel="next" href="../future.html" title="Extras/Future Directions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="dists/weibull_dist.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../future.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dist_algorithms">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.dist_ref.dist_algorithms"></a><a class="link" href="dist_algorithms.html" title="Distribution Algorithms">Distribution Algorithms</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.dist_ref.dist_algorithms.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dist_algorithms.finding_the_location_and_scale_f"></a></span><a class="link" href="dist_algorithms.html#math_toolkit.dist_ref.dist_algorithms.finding_the_location_and_scale_f">Finding
+ the Location and Scale for Normal and similar distributions</a>
+ </h5>
+<p>
+ Two functions aid finding location and scale of random variable z to give
+ probability p (given a scale or location). Only applies to distributions
+ like normal, lognormal, extreme value, Cauchy, (and symmetrical triangular),
+ that have scale and location properties.
+ </p>
+<p>
+ These functions are useful to predict the mean and/or standard deviation
+ that will be needed to meet a specified minimum weight or maximum dose.
+ </p>
+<p>
+ Complement versions are also provided, both with explicit and implicit (default)
+ policy.
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span> <span class="comment">// May be needed by users defining their own policies.</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">complement</span><span class="special">;</span> <span class="comment">// Will be needed by users who want to use complements.</span>
+</pre>
+<h5>
+<a name="math_toolkit.dist_ref.dist_algorithms.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dist_algorithms.find_location_function"></a></span><a class="link" href="dist_algorithms.html#math_toolkit.dist_ref.dist_algorithms.find_location_function">find_location
+ function</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">find_location</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">Dist</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span> <span class="comment">// explicit error handling policy</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">find_location</span><span class="special">(</span> <span class="comment">// For example, normal mean.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">z</span><span class="special">,</span> <span class="comment">// location of random variable z to give probability, P(X > z) == p.</span>
+ <span class="comment">// For example, a nominal minimum acceptable z, so that p * 100 % are > z</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// probability value desired at x, say 0.95 for 95% > z.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">scale</span><span class="special">,</span> <span class="comment">// scale parameter, for example, normal standard deviation.</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Dist</span><span class="special">></span> <span class="comment">// with default policy.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">find_location</span><span class="special">(</span> <span class="comment">// For example, normal mean.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">z</span><span class="special">,</span> <span class="comment">// location of random variable z to give probability, P(X > z) == p.</span>
+ <span class="comment">// For example, a nominal minimum acceptable z, so that p * 100 % are > z</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// probability value desired at x, say 0.95 for 95% > z.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">scale</span><span class="special">);</span> <span class="comment">// scale parameter, for example, normal standard deviation.</span>
+
+ <span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.dist_ref.dist_algorithms.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dist_algorithms.find_scale_function"></a></span><a class="link" href="dist_algorithms.html#math_toolkit.dist_ref.dist_algorithms.find_scale_function">find_scale
+ function</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">find_scale</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">Dist</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">find_scale</span><span class="special">(</span> <span class="comment">// For example, normal mean.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">z</span><span class="special">,</span> <span class="comment">// location of random variable z to give probability, P(X > z) == p.</span>
+ <span class="comment">// For example, a nominal minimum acceptable weight z, so that p * 100 % are > z</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// probability value desired at x, say 0.95 for 95% > z.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">location</span><span class="special">,</span> <span class="comment">// location parameter, for example, normal distribution mean.</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Dist</span><span class="special">></span> <span class="comment">// with default policy.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">find_scale</span><span class="special">(</span> <span class="comment">// For example, normal mean.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">z</span><span class="special">,</span> <span class="comment">// location of random variable z to give probability, P(X > z) == p.</span>
+ <span class="comment">// For example, a nominal minimum acceptable z, so that p * 100 % are > z</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// probability value desired at x, say 0.95 for 95% > z.</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">location</span><span class="special">)</span> <span class="comment">// location parameter, for example, normal distribution mean.</span>
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ All argument must be finite, otherwise <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is called.
+ </p>
+<p>
+ Probability arguments must be [0, 1], otherwise <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is called.
+ </p>
+<p>
+ If the choice of arguments would give a negative scale, <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is called, unless the policy is to ignore, when the negative (impossible)
+ value of scale is returned.
+ </p>
+<p>
+ <a class="link" href="../stat_tut/weg/find_eg.html" title="Find Location and Scale Examples">Find Mean and standard
+ deviation examples</a> gives simple examples of use of both find_scale
+ and find_location, and a longer example finding means and standard deviations
+ of normally distributed weights to meet a specification.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="dists/weibull_dist.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../future.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,91 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Distributions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../dist_ref.html" title="Statistical Distributions Reference">
+<link rel="prev" href="nmp.html" title="Non-Member Properties">
+<link rel="next" href="dists/bernoulli_dist.html" title="Bernoulli Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="nmp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="dists/bernoulli_dist.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.dist_ref.dists"></a><a class="link" href="dists.html" title="Distributions">Distributions</a>
+</h3></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="dists/bernoulli_dist.html">Bernoulli
+ Distribution</a></span></dt>
+<dt><span class="section">Beta Distribution</span></dt>
+<dt><span class="section"><a href="dists/binomial_dist.html">Binomial
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/cauchy_dist.html">Cauchy-Lorentz
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/chi_squared_dist.html">Chi Squared
+ Distribution</a></span></dt>
+<dt><span class="section">Exponential Distribution</span></dt>
+<dt><span class="section"><a href="dists/extreme_dist.html">Extreme Value
+ Distribution</a></span></dt>
+<dt><span class="section">F Distribution</span></dt>
+<dt><span class="section"><a href="dists/gamma_dist.html">Gamma (and
+ Erlang) Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/geometric_dist.html">Geometric
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/hypergeometric_dist.html">Hypergeometric
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/inverse_chi_squared_dist.html">Inverse
+ Chi Squared Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/inverse_gamma_dist.html">Inverse
+ Gamma Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/inverse_gaussian_dist.html">Inverse
+ Gaussian (or Inverse Normal) Distribution</a></span></dt>
+<dt><span class="section">Laplace Distribution</span></dt>
+<dt><span class="section"><a href="dists/logistic_dist.html">Logistic
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/lognormal_dist.html">Log Normal
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/negative_binomial_dist.html">Negative
+ Binomial Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/nc_beta_dist.html">Noncentral
+ Beta Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/nc_chi_squared_dist.html">Noncentral
+ Chi-Squared Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/nc_f_dist.html">Noncentral F
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/nc_t_dist.html">Noncentral T
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/normal_dist.html">Normal (Gaussian)
+ Distribution</a></span></dt>
+<dt><span class="section">Pareto Distribution</span></dt>
+<dt><span class="section">Poisson Distribution</span></dt>
+<dt><span class="section">Rayleigh Distribution</span></dt>
+<dt><span class="section"><a href="dists/skew_normal_dist.html">Skew
+ Normal Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/students_t_dist.html">Students
+ t Distribution</a></span></dt>
+<dt><span class="section"><a href="dists/triangular_dist.html">Triangular
+ Distribution</a></span></dt>
+<dt><span class="section">Uniform Distribution</span></dt>
+<dt><span class="section">Weibull Distribution</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="nmp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="dists/bernoulli_dist.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/bernoulli_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/bernoulli_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,346 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Bernoulli Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="../dists.html" title="Distributions">
+<link rel="next" href="beta_dist.html" title="Beta Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../dists.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="beta_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_bernoulli_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.bernoulli_dist"></a><a class="link" href="bernoulli_dist.html" title="Bernoulli Distribution">Bernoulli
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">bernoulli</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">bernoulli_distribution</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">bernoulli_distribution</span><span class="special"><></span> <span class="identifier">bernoulli</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">bernoulli_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="identifier">bernoulli_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span> <span class="comment">// Constructor.</span>
+ <span class="comment">// Accessor function.</span>
+ <span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="comment">// Probability of success (as a fraction).</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The Bernoulli distribution is a discrete distribution of the outcome of
+ a single trial with only two results, 0 (failure) or 1 (success), with
+ a probability of success p.
+ </p>
+<p>
+ The Bernoulli distribution is the simplest building block on which other
+ discrete distributions of sequences of independent Bernoulli trials can
+ be based.
+ </p>
+<p>
+ The Bernoulli is the binomial distribution (k = 1, p) with only one trial.
+ </p>
+<p>
+ <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function pdf</a> f(0) = 1 - p, f(1) = p. <a href="http://en.wikipedia.org/wiki/Cumulative_Distribution_Function" target="_top">Cumulative
+ distribution function</a> D(k) = if (k == 0) 1 - p else 1.
+ </p>
+<p>
+ The following graph illustrates how the <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function pdf</a> varies with the outcome of the single trial:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/bernoulli_pdf.png" align="middle"></span>
+ </p>
+<p>
+ and the <a href="http://en.wikipedia.org/wiki/Cumulative_Distribution_Function" target="_top">Cumulative
+ distribution function</a>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/bernoulli_cdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.bernoulli_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.bernoulli_dist.member_functions"></a></span><a class="link" href="bernoulli_dist.html#math_toolkit.dist_ref.dists.bernoulli_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">bernoulli_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a <a href="http://en.wikipedia.org/wiki/bernoulli_distribution" target="_top">bernoulli
+ distribution</a> with success_fraction <span class="emphasis"><em>p</em></span>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span>
+</pre>
+<p>
+ Returns the <span class="emphasis"><em>success_fraction</em></span> parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.bernoulli_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.bernoulli_dist.non_member_accessors"></a></span><a class="link" href="bernoulli_dist.html#math_toolkit.dist_ref.dists.bernoulli_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is 0 and 1, and the useful supported
+ range is only 0 or 1.
+ </p>
+<p>
+ Outside this range, functions are undefined, or may throw domain_error
+ exception and make an error message available.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.bernoulli_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.bernoulli_dist.accuracy"></a></span><a class="link" href="bernoulli_dist.html#math_toolkit.dist_ref.dists.bernoulli_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The Bernoulli distribution is implemented with simple arithmetic operators
+ and so should have errors within an epsilon or two.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.bernoulli_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.bernoulli_dist.implementation"></a></span><a class="link" href="bernoulli_dist.html#math_toolkit.dist_ref.dists.bernoulli_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>p</em></span> is the probability of success
+ and <span class="emphasis"><em>q = 1-p</em></span>. <span class="emphasis"><em>k</em></span> is the random
+ variate, either 0 or 1.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The Bernoulli distribution is implemented here as a <span class="emphasis"><em>strict
+ discrete</em></span> distribution. If a generalised version, allowing
+ k to be any real, is required then the binomial distribution with a single
+ trial should be used, for example:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">binomial_distribution</span><span class="special">(</span><span class="number">1</span><span class="special">,</span>
+ <span class="number">0.25</span><span class="special">)</span></code>
+ </p>
+</td></tr>
+</table></div>
+<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>
+ Supported range
+ </p>
+ </td>
+<td>
+ <p>
+ {0, 1}
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: pdf = 1 - p for k = 0, else p
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: cdf = 1 - p for k = 0, else 1
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ q = 1 - p
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ if x <= (1-p) 0 else 1
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ if x <= (1-p) 1 else 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ p
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ p * (1 - p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ if (p < 0.5) 0 else 1
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ (1 - 2 * p) / sqrt(p * q)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 6 * p * p - 6 * p +1/ p * q
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ kurtosis -3
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.bernoulli_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.bernoulli_dist.references"></a></span><a class="link" href="bernoulli_dist.html#math_toolkit.dist_ref.dists.bernoulli_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/Bernoulli_distribution" target="_top">Wikpedia
+ Bernoulli distribution</a>
+ </li>
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/BernoulliDistribution.html" target="_top">Weisstein,
+ Eric W. "Bernoulli Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../dists.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="beta_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/beta_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/beta_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,612 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Beta Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="bernoulli_dist.html" title="Bernoulli Distribution">
+<link rel="next" href="binomial_dist.html" title="Binomial Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="bernoulli_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="binomial_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_beta_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.beta_dist"></a><a class="link" href="beta_dist.html" title="Beta Distribution">Beta Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">beta</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">beta_distribution</span><span class="special">;</span>
+
+<span class="comment">// typedef beta_distribution<double> beta;</span>
+<span class="comment">// Note that this is deliberately NOT provided,</span>
+<span class="comment">// to avoid a clash with the function name beta.</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">beta_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 from two shape parameters, alpha & beta:</span>
+ <span class="identifier">beta_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">b</span><span class="special">);</span>
+
+ <span class="comment">// Parameter accessors:</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Parameter estimators of alpha or beta from mean and variance.</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_alpha</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">,</span> <span class="comment">// Expected value of mean.</span>
+ <span class="identifier">RealType</span> <span class="identifier">variance</span><span class="special">);</span> <span class="comment">// Expected value of variance.</span>
+
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_beta</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">,</span> <span class="comment">// Expected value of mean.</span>
+ <span class="identifier">RealType</span> <span class="identifier">variance</span><span class="special">);</span> <span class="comment">// Expected value of variance.</span>
+
+ <span class="comment">// Parameter estimators from from</span>
+ <span class="comment">// either alpha or beta, and x and probability.</span>
+
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_alpha</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">,</span> <span class="comment">// from beta.</span>
+ <span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">,</span> <span class="comment">// x.</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// cdf</span>
+
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_beta</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="comment">// alpha.</span>
+ <span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">,</span> <span class="comment">// probability x.</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// probability cdf.</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The class type <code class="computeroutput"><span class="identifier">beta_distribution</span></code>
+ represents a <a href="http://en.wikipedia.org/wiki/Beta_distribution" target="_top">beta
+ </a> <a href="http://en.wikipedia.org/wiki/Probability_distribution" target="_top">probability
+ distribution function</a>.
+ </p>
+<p>
+ The <a href="http://mathworld.wolfram.com/BetaDistribution.htm" target="_top">beta
+ distribution </a> is used as a <a href="http://en.wikipedia.org/wiki/Prior_distribution" target="_top">prior
+ distribution</a> for binomial proportions in <a href="http://mathworld.wolfram.com/BayesianAnalysis.html" target="_top">Bayesian
+ analysis</a>.
+ </p>
+<p>
+ See also: <a href="http://documents.wolfram.com/calculationcenter/v2/Functions/ListsMatrices/Statistics/BetaDistribution.html" target="_top">beta
+ distribution</a> and <a href="http://en.wikipedia.org/wiki/Bayesian_statistics" target="_top">Bayesian
+ statistics</a>.
+ </p>
+<p>
+ How the beta distribution is used for <a href="http://home.uchicago.edu/~grynav/bayes/ABSLec5.ppt" target="_top">Bayesian
+ analysis of one parameter models</a> is discussed by Jeff Grynaviski.
+ </p>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function PDF</a> for the <a href="http://en.wikipedia.org/wiki/Beta_distribution" target="_top">beta
+ distribution</a> defined on the interval [0,1] is given by:
+ </p>
+<p>
+ f(x;α,β) = x<sup>α - 1</sup> (1 - x)<sup>β -1</sup> / B(α, β)
+ </p>
+<p>
+ where B(α, β) is the <a href="http://en.wikipedia.org/wiki/Beta_function" target="_top">beta
+ function</a>, implemented in this library as <a class="link" href="../../sf_beta/beta_function.html" title="Beta">beta</a>.
+ Division by the beta function ensures that the pdf is normalized to the
+ range zero to unity.
+ </p>
+<p>
+ The following graph illustrates examples of the pdf for various values
+ of the shape parameters. Note the α = β = 2 (blue line) is dome-shaped, and
+ might be approximated by a symmetrical triangular distribution.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/beta_pdf.png" align="middle"></span>
+ </p>
+<p>
+ If α = β = 1, then it is a __space <a href="http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29" target="_top">uniform
+ distribution</a>, equal to unity in the entire interval x = 0 to 1.
+ If α __space and β __space are < 1, then the pdf is U-shaped. If α != β, then
+ the shape is asymmetric and could be approximated by a triangle whose apex
+ is away from the centre (where x = half).
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.member_functions"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<h6>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.constructor"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.constructor">Constructor</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">beta_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a beta distribution with shape parameters <span class="emphasis"><em>alpha</em></span>
+ and <span class="emphasis"><em>beta</em></span>.
+ </p>
+<p>
+ Requires alpha,beta > 0,otherwise <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is called. Note that technically the beta distribution is defined for alpha,beta
+ >= 0, but it's not clear whether any program can actually make use of
+ that latitude or how many of the non-member functions can be usefully defined
+ in that case. Therefore for now, we regard it as an error if alpha or beta
+ is zero.
+ </p>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">beta_distribution</span><span class="special"><></span> <span class="identifier">mybeta</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">5</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a the beta distribution with alpha=2 and beta=5 (shown in yellow
+ in the graph above).
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.parameter_accessors"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.parameter_accessors">Parameter
+ Accessors</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>alpha</em></span> from which this distribution
+ was constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>beta</em></span> from which this distribution
+ was constructed.
+ </p>
+<p>
+ So for example:
+ </p>
+<pre class="programlisting"><span class="identifier">beta_distribution</span><span class="special"><></span> <span class="identifier">mybeta</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">5</span><span class="special">);</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">mybeta</span><span class="special">.</span><span class="identifier">alpha</span><span class="special">()</span> <span class="special">==</span> <span class="number">2.</span><span class="special">);</span> <span class="comment">// mybeta.alpha() returns 2</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">mybeta</span><span class="special">.</span><span class="identifier">beta</span><span class="special">()</span> <span class="special">==</span> <span class="number">5.</span><span class="special">);</span> <span class="comment">// mybeta.beta() returns 5</span>
+</pre>
+<h5>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.parameter_estimators"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.parameter_estimators">Parameter
+ Estimators</a>
+ </h5>
+<p>
+ Two pairs of parameter estimators are provided.
+ </p>
+<p>
+ One estimates either α __space or β __space from presumed-known mean and variance.
+ </p>
+<p>
+ The other pair estimates either α __space or β __space from the cdf and x.
+ </p>
+<p>
+ It is also possible to estimate α __space and β __space from 'known' mode &
+ quantile. For example, calculators are provided by the <a href="http://www.ausvet.com.au/pprev/content.php?page=PPscript" target="_top">Pooled
+ Prevalence Calculator</a> and <a href="http://www.epi.ucdavis.edu/diagnostictests/betabuster.html" target="_top">Beta
+ Buster</a> but this is not yet implemented here.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_alpha</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">,</span> <span class="comment">// Expected value of mean.</span>
+ <span class="identifier">RealType</span> <span class="identifier">variance</span><span class="special">);</span> <span class="comment">// Expected value of variance.</span>
+</pre>
+<p>
+ Returns the unique value of α   that corresponds to a beta distribution with
+ mean <span class="emphasis"><em>mean</em></span> and variance <span class="emphasis"><em>variance</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_beta</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">,</span> <span class="comment">// Expected value of mean.</span>
+ <span class="identifier">RealType</span> <span class="identifier">variance</span><span class="special">);</span> <span class="comment">// Expected value of variance.</span>
+</pre>
+<p>
+ Returns the unique value of β   that corresponds to a beta distribution with
+ mean <span class="emphasis"><em>mean</em></span> and variance <span class="emphasis"><em>variance</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_alpha</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">,</span> <span class="comment">// from beta.</span>
+ <span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">,</span> <span class="comment">// x.</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// probability cdf</span>
+</pre>
+<p>
+ Returns the value of α   that gives: <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">beta_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>(</span><span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">beta</span><span class="special">),</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">probability</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_beta</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="comment">// alpha.</span>
+ <span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">,</span> <span class="comment">// probability x.</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// probability cdf.</span>
+</pre>
+<p>
+ Returns the value of β   that gives: <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">beta_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>(</span><span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">beta</span><span class="special">),</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">probability</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.non_member_accessor_functions"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.non_member_accessor_functions">Non-member
+ Accessor Functions</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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The formulae for calculating these are shown in the table below, and at
+ <a href="http://mathworld.wolfram.com/BetaDistribution.html" target="_top">Wolfram
+ Mathworld</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.applications"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.applications">Applications</a>
+ </h5>
+<p>
+ The beta distribution can be used to model events constrained to take place
+ within an interval defined by a minimum and maximum value: so it is used
+ in project management systems.
+ </p>
+<p>
+ It is also widely used in <a href="http://en.wikipedia.org/wiki/Bayesian_inference" target="_top">Bayesian
+ statistical inference</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h6"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.related_distributions"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.related_distributions">Related
+ distributions</a>
+ </h5>
+<p>
+ The beta distribution with both α __space and β = 1 follows a <a href="http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29" target="_top">uniform
+ distribution</a>.
+ </p>
+<p>
+ The triangular
+ is used when less precise information is available.
+ </p>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Binomial_distribution" target="_top">binomial
+ distribution</a> is closely related when α __space and β __space are integers.
+ </p>
+<p>
+ With integer values of α __space and β __space the distribution B(i, j) is
+ that of the j-th highest of a sample of i + j + 1 independent random variables
+ uniformly distributed between 0 and 1. The cumulative probability from
+ 0 to x is thus the probability that the j-th highest value is less than
+ x. Or it is the probability that that at least i of the random variables
+ are less than x, a probability given by summing over the <a class="link" href="binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a> with its p parameter set to x.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h7"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.accuracy"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ This distribution is implemented using the <a class="link" href="../../sf_beta/beta_function.html" title="Beta">beta
+ functions</a> <a class="link" href="../../sf_beta/beta_function.html" title="Beta">beta</a>
+ and <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">incomplete beta
+ functions</a> <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>
+ and <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>;
+ please refer to these functions for information on accuracy.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h8"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.implementation"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span>
+ are the parameters α   and β, <span class="emphasis"><em>x</em></span> is the random variable,
+ <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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>
+ f(x;α,β) = x<sup>α - 1</sup> (1 - x)<sup>β -1</sup> / B(α, β)
+ </p>
+ <p>
+ Implemented using <a class="link" href="../../sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function">ibeta_derivative</a>(a,
+ b, x).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the incomplete beta function <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>(a,
+ b, x)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>(a,
+ b, x)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the inverse incomplete beta function <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>(a,
+ b, p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inv</a>(a,
+ b, q)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span><span class="special">/(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span> <span class="special">*</span>
+ <span class="identifier">b</span> <span class="special">/</span>
+ <span class="special">(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">)^</span><span class="number">2</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">+</span>
+ <span class="identifier">b</span> <span class="special">+</span>
+ <span class="number">1</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special">(</span><span class="identifier">a</span><span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">/</span>
+ <span class="special">(</span><span class="identifier">a</span>
+ <span class="special">+</span> <span class="identifier">b</span>
+ <span class="special">-</span> <span class="number">2</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="number">2</span> <span class="special">(</span><span class="identifier">b</span><span class="special">-</span><span class="identifier">a</span><span class="special">)</span>
+ <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">+</span><span class="number">1</span><span class="special">)/(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">+</span><span class="number">2</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</span>
+ <span class="special">*</span> <span class="identifier">b</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../equations/beta_dist_kurtosis.png"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">kurtosis</span> <span class="special">+</span>
+ <span class="number">3</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ parameter estimation
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ alpha
+ </p>
+ <p>
+ from mean and variance
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mean</span> <span class="special">*</span>
+ <span class="special">((</span> <span class="special">(</span><span class="identifier">mean</span> <span class="special">*</span>
+ <span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">mean</span><span class="special">))</span> <span class="special">/</span>
+ <span class="identifier">variance</span><span class="special">)-</span>
+ <span class="number">1</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ beta
+ </p>
+ <p>
+ from mean and variance
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">mean</span><span class="special">)</span> <span class="special">*</span>
+ <span class="special">(((</span><span class="identifier">mean</span>
+ <span class="special">*</span> <span class="special">(</span><span class="number">1</span> <span class="special">-</span> <span class="identifier">mean</span><span class="special">))</span>
+ <span class="special">/</span><span class="identifier">variance</span><span class="special">)-</span><span class="number">1</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The member functions <code class="computeroutput"><span class="identifier">find_alpha</span></code>
+ and <code class="computeroutput"><span class="identifier">find_beta</span></code>
+ </p>
+ <p>
+ from cdf and probability x
+ </p>
+ <p>
+ and <span class="bold"><strong>either</strong></span> <code class="computeroutput"><span class="identifier">alpha</span></code>
+ or <code class="computeroutput"><span class="identifier">beta</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Implemented in terms of the inverse incomplete beta functions
+ </p>
+ <p>
+ <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inva</a>,
+ and <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_invb</a>
+ respectively.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_alpha</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ibeta_inva</span><span class="special">(</span><span class="identifier">beta</span><span class="special">,</span>
+ <span class="identifier">x</span><span class="special">,</span>
+ <span class="identifier">probability</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_beta</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ibeta_invb</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">,</span>
+ <span class="identifier">x</span><span class="special">,</span>
+ <span class="identifier">probability</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.beta_dist.h9"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.beta_dist.references"></a></span><a class="link" href="beta_dist.html#math_toolkit.dist_ref.dists.beta_dist.references">References</a>
+ </h5>
+<p>
+ <a href="http://en.wikipedia.org/wiki/Beta_distribution" target="_top">Wikipedia Beta
+ distribution</a>
+ </p>
+<p>
+ <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda366h.htm" target="_top">NIST
+ Exploratory Data Analysis</a>
+ </p>
+<p>
+ <a href="http://mathworld.wolfram.com/BetaDistribution.html" target="_top">Wolfram
+ MathWorld</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="bernoulli_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="binomial_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/binomial_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/binomial_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,898 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Binomial Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="beta_dist.html" title="Beta Distribution">
+<link rel="next" href="cauchy_dist.html" title="Cauchy-Lorentz Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="beta_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="cauchy_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_binomial_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.binomial_dist"></a><a class="link" href="binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">binomial_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">binomial_distribution</span><span class="special"><></span> <span class="identifier">binomial</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">binomial_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="keyword">static</span> <span class="keyword">const</span> <span class="emphasis"><em>unspecified-type</em></span> <span class="identifier">clopper_pearson_exact_interval</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="emphasis"><em>unspecified-type</em></span> <span class="identifier">jeffreys_prior_interval</span><span class="special">;</span>
+
+ <span class="comment">// construct:</span>
+ <span class="identifier">binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+
+ <span class="comment">// parameter access::</span>
+ <span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Bounds on success fraction:</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">,</span>
+ <span class="emphasis"><em>unspecified-type</em></span> <span class="identifier">method</span> <span class="special">=</span> <span class="identifier">clopper_pearson_exact_interval</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">,</span>
+ <span class="emphasis"><em>unspecified-type</em></span> <span class="identifier">method</span> <span class="special">=</span> <span class="identifier">clopper_pearson_exact_interval</span><span class="special">);</span>
+
+ <span class="comment">// estimate min/max number of trials:</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of events</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// risk level</span>
+
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of events</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// risk level</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The class type <code class="computeroutput"><span class="identifier">binomial_distribution</span></code>
+ represents a <a href="http://mathworld.wolfram.com/BinomialDistribution.html" target="_top">binomial
+ distribution</a>: it is used when there are exactly two mutually exclusive
+ outcomes of a trial. These outcomes are labelled "success" and
+ "failure". The <a class="link" href="binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a> is used to obtain the probability of observing k successes
+ in N trials, with the probability of success on a single trial denoted
+ by p. The binomial distribution assumes that p is fixed for all trials.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The random variable for the binomial distribution is the number of successes,
+ (the number of trials is a fixed property of the distribution) whereas
+ for the negative binomial, the random variable is the number of trials,
+ for a fixed number of successes.
+ </p></td></tr>
+</table></div>
+<p>
+ The PDF for the binomial distribution is given by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/binomial_ref2.png"></span>
+ </p>
+<p>
+ The following two graphs illustrate how the PDF changes depending upon
+ the distributions parameters, first we'll keep the success fraction <span class="emphasis"><em>p</em></span>
+ fixed at 0.5, and vary the sample size:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/binomial_pdf_1.png" align="middle"></span>
+ </p>
+<p>
+ Alternatively, we can keep the sample size fixed at N=20 and vary the success
+ fraction <span class="emphasis"><em>p</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/binomial_pdf_2.png" align="middle"></span>
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The Binomial distribution is a discrete distribution: internally, functions
+ like the <code class="computeroutput"><span class="identifier">cdf</span></code> and <code class="computeroutput"><span class="identifier">pdf</span></code> are treated "as if" they
+ are continuous functions, but in reality the results returned from these
+ functions only have meaning if an integer value is provided for the random
+ variate argument.
+ </p>
+<p>
+ The quantile function will by default return an integer result that has
+ been <span class="emphasis"><em>rounded outwards</em></span>. That is to say lower quantiles
+ (where the probability is less than 0.5) are rounded downward, and upper
+ quantiles (where the probability is greater than 0.5) are rounded upwards.
+ This behaviour ensures that if an X% quantile is requested, then <span class="emphasis"><em>at
+ least</em></span> the requested coverage will be present in the central
+ region, and <span class="emphasis"><em>no more than</em></span> the requested coverage
+ will be present in the tails.
+ </p>
+<p>
+ This behaviour can be changed so that the quantile functions are rounded
+ differently, or even return a real-valued result using <a class="link" href="../../pol_overview.html" title="Policy Overview">Policies</a>.
+ It is strongly recommended that you read the tutorial <a class="link" href="../../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a> before using the quantile
+ function on the Binomial distribution. The <a class="link" href="../../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">reference
+ docs</a> describe how to change the rounding policy for these distributions.
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.member_functions"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<h6>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.construct"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.construct">Construct</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ Constructor: <span class="emphasis"><em>n</em></span> is the total number of trials, <span class="emphasis"><em>p</em></span>
+ is the probability of success of a single trial.
+ </p>
+<p>
+ Requires <code class="computeroutput"><span class="number">0</span> <span class="special"><=</span>
+ <span class="identifier">p</span> <span class="special"><=</span>
+ <span class="number">1</span></code>, and <code class="computeroutput"><span class="identifier">n</span>
+ <span class="special">>=</span> <span class="number">0</span></code>,
+ otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.accessors"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.accessors">Accessors</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>p</em></span> from which this distribution
+ was constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>n</em></span> from which this distribution
+ was constructed.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.lower_bound_on_the_success_fract"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.lower_bound_on_the_success_fract">Lower
+ Bound on the Success Fraction</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span>
+ <span class="emphasis"><em>unspecified-type</em></span> <span class="identifier">method</span> <span class="special">=</span> <span class="identifier">clopper_pearson_exact_interval</span><span class="special">);</span>
+</pre>
+<p>
+ Returns a lower bound on the success fraction:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">trials</span></dt>
+<dd><p>
+ The total number of trials conducted.
+ </p></dd>
+<dt><span class="term">successes</span></dt>
+<dd><p>
+ The number of successes that occurred.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The largest acceptable probability that the true value of the success
+ fraction is <span class="bold"><strong>less than</strong></span> the value
+ returned.
+ </p></dd>
+<dt><span class="term">method</span></dt>
+<dd><p>
+ An optional parameter that specifies the method to be used to compute
+ the interval (See below).
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example, if you observe <span class="emphasis"><em>k</em></span> successes from <span class="emphasis"><em>n</em></span>
+ trials the best estimate for the success fraction is simply <span class="emphasis"><em>k/n</em></span>,
+ but if you want to be 95% sure that the true value is <span class="bold"><strong>greater
+ than</strong></span> some value, <span class="emphasis"><em>p<sub>min</sub></em></span>, then:
+ </p>
+<pre class="programlisting"><span class="identifier">p</span><sub>min</sub> <span class="special">=</span> <span class="identifier">binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">n</span><span class="special">,</span> <span class="identifier">k</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ <a class="link" href="../../stat_tut/weg/binom_eg/binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution">See worked
+ example.</a>
+ </p>
+<p>
+ There are currently two possible values available for the <span class="emphasis"><em>method</em></span>
+ optional parameter: <span class="emphasis"><em>clopper_pearson_exact_interval</em></span>
+ or <span class="emphasis"><em>jeffreys_prior_interval</em></span>. These constants are both
+ members of class template <code class="computeroutput"><span class="identifier">binomial_distribution</span></code>,
+ so usage is for example:
+ </p>
+<pre class="programlisting"><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">n</span><span class="special">,</span> <span class="identifier">k</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="identifier">binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">jeffreys_prior_interval</span><span class="special">);</span>
+</pre>
+<p>
+ The default method if this parameter is not specified is the Clopper Pearson
+ "exact" interval. This produces an interval that guarantees at
+ least <code class="computeroutput"><span class="number">100</span><span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">alpha</span><span class="special">)%</span></code> coverage, but which is known to be overly
+ conservative, sometimes producing intervals with much greater than the
+ requested coverage.
+ </p>
+<p>
+ The alternative calculation method produces a non-informative Jeffreys
+ Prior interval. It produces <code class="computeroutput"><span class="number">100</span><span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">alpha</span><span class="special">)%</span></code>
+ coverage only <span class="emphasis"><em>in the average case</em></span>, though is typically
+ very close to the requested coverage level. It is one of the main methods
+ of calculation recommended in the review by Brown, Cai and DasGupta.
+ </p>
+<p>
+ Please note that the "textbook" calculation method using a normal
+ approximation (the Wald interval) is deliberately not provided: it is known
+ to produce consistently poor results, even when the sample size is surprisingly
+ large. Refer to Brown, Cai and DasGupta for a full explanation. Many other
+ methods of calculation are available, and may be more appropriate for specific
+ situations. Unfortunately there appears to be no consensus amongst statisticians
+ as to which is "best": refer to the discussion at the end of
+ Brown, Cai and DasGupta for examples.
+ </p>
+<p>
+ The two methods provided here were chosen principally because they can
+ be used for both one and two sided intervals. See also:
+ </p>
+<p>
+ Lawrence D. Brown, T. Tony Cai and Anirban DasGupta (2001), Interval Estimation
+ for a Binomial Proportion, Statistical Science, Vol. 16, No. 2, 101-133.
+ </p>
+<p>
+ T. Tony Cai (2005), One-sided confidence intervals in discrete distributions,
+ Journal of Statistical Planning and Inference 131, 63-88.
+ </p>
+<p>
+ Agresti, A. and Coull, B. A. (1998). Approximate is better than "exact"
+ for interval estimation of binomial proportions. Amer. Statist. 52 119-126.
+ </p>
+<p>
+ Clopper, C. J. and Pearson, E. S. (1934). The use of confidence or fiducial
+ limits illustrated in the case of the binomial. Biometrika 26 404-413.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.upper_bound_on_the_success_fract"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.upper_bound_on_the_success_fract">Upper
+ Bound on the Success Fraction</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span>
+ <span class="emphasis"><em>unspecified-type</em></span> <span class="identifier">method</span> <span class="special">=</span> <span class="identifier">clopper_pearson_exact_interval</span><span class="special">);</span>
+</pre>
+<p>
+ Returns an upper bound on the success fraction:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">trials</span></dt>
+<dd><p>
+ The total number of trials conducted.
+ </p></dd>
+<dt><span class="term">successes</span></dt>
+<dd><p>
+ The number of successes that occurred.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The largest acceptable probability that the true value of the success
+ fraction is <span class="bold"><strong>greater than</strong></span> the value
+ returned.
+ </p></dd>
+<dt><span class="term">method</span></dt>
+<dd><p>
+ An optional parameter that specifies the method to be used to compute
+ the interval. Refer to the documentation for <code class="computeroutput"><span class="identifier">find_upper_bound_on_p</span></code>
+ above for the meaning of the method options.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example, if you observe <span class="emphasis"><em>k</em></span> successes from <span class="emphasis"><em>n</em></span>
+ trials the best estimate for the success fraction is simply <span class="emphasis"><em>k/n</em></span>,
+ but if you want to be 95% sure that the true value is <span class="bold"><strong>less
+ than</strong></span> some value, <span class="emphasis"><em>p<sub>max</sub></em></span>, then:
+ </p>
+<pre class="programlisting"><span class="identifier">p</span><sub>max</sub> <span class="special">=</span> <span class="identifier">binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">n</span><span class="special">,</span> <span class="identifier">k</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ <a class="link" href="../../stat_tut/weg/binom_eg/binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution">See worked
+ example.</a>
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ In order to obtain a two sided bound on the success fraction, you call
+ both <code class="computeroutput"><span class="identifier">find_lower_bound_on_p</span></code>
+ <span class="bold"><strong>and</strong></span> <code class="computeroutput"><span class="identifier">find_upper_bound_on_p</span></code>
+ each with the same arguments.
+ </p>
+<p>
+ If the desired risk level that the true success fraction lies outside
+ the bounds is α, then you pass α/2 to these functions.
+ </p>
+<p>
+ So for example a two sided 95% confidence interval would be obtained
+ by passing α = 0.025 to each of the functions.
+ </p>
+<p>
+ <a class="link" href="../../stat_tut/weg/binom_eg/binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution">See worked
+ example.</a>
+ </p>
+</td></tr>
+</table></div>
+<h6>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.estimating_the_number_of_trials_"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.estimating_the_number_of_trials_">Estimating
+ the Number of Trials Required for a Certain Number of Successes</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of events</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// probability threshold</span>
+</pre>
+<p>
+ This function estimates the minimum number of trials required to ensure
+ that more than k events is observed with a level of risk <span class="emphasis"><em>alpha</em></span>
+ that k or fewer events occur.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">k</span></dt>
+<dd><p>
+ The number of success observed.
+ </p></dd>
+<dt><span class="term">p</span></dt>
+<dd><p>
+ The probability of success for each trial.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The maximum acceptable probability that k events or fewer will be
+ observed.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_number_of_trials</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the smallest number of trials we must conduct to be 95% sure of
+ seeing 10 events that occur with frequency one half.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h6"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.estimating_the_maximum_number_of"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.estimating_the_maximum_number_of">Estimating
+ the Maximum Number of Trials to Ensure no more than a Certain Number of
+ Successes</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of events</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// probability threshold</span>
+</pre>
+<p>
+ This function estimates the maximum number of trials we can conduct to
+ ensure that k successes or fewer are observed, with a risk <span class="emphasis"><em>alpha</em></span>
+ that more than k occur.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">k</span></dt>
+<dd><p>
+ The number of success observed.
+ </p></dd>
+<dt><span class="term">p</span></dt>
+<dd><p>
+ The probability of success for each trial.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The maximum acceptable probability that more than k events will be
+ observed.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">1e-6</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the largest number of trials we can conduct and still be 95% certain
+ of not observing any events that occur with one in a million frequency.
+ This is typically used in failure analysis.
+ </p>
+<p>
+ <a class="link" href="../../stat_tut/weg/binom_eg/binom_size_eg.html" title="Estimating Sample Sizes for a Binomial Distribution.">See Worked
+ Example.</a>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h7"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.non_member_accessors"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain for the random variable <span class="emphasis"><em>k</em></span> is <code class="computeroutput"><span class="number">0</span> <span class="special"><=</span> <span class="identifier">k</span> <span class="special"><=</span> <span class="identifier">N</span></code>, otherwise a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is returned.
+ </p>
+<p>
+ It's worth taking a moment to define what these accessors actually mean
+ in the context of this distribution:
+ </p>
+<div class="table">
+<a name="math_toolkit.dist_ref.dists.binomial_dist.meaning_of_the_non_member_access"></a><p class="title"><b>Table 2.1. Meaning of the non-member accessors</b></p>
+<div class="table-contents"><table class="table" summary="Meaning of the non-member accessors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Meaning
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density
+ Function</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The probability of obtaining <span class="bold"><strong>exactly k
+ successes</strong></span> from n trials with success fraction p. For
+ example:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span>
+ <span class="identifier">p</span><span class="special">),</span>
+ <span class="identifier">k</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution
+ Function</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The probability of obtaining <span class="bold"><strong>k successes
+ or fewer</strong></span> from n trials with success fraction p. For
+ example:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span>
+ <span class="identifier">p</span><span class="special">),</span>
+ <span class="identifier">k</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.ccdf">Complement of
+ the Cumulative Distribution Function</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The probability of obtaining <span class="bold"><strong>more than
+ k successes</strong></span> from n trials with success fraction p.
+ For example:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span>
+ <span class="identifier">p</span><span class="special">),</span>
+ <span class="identifier">k</span><span class="special">))</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The <span class="bold"><strong>greatest</strong></span> number of successes
+ that may be observed from n trials with success fraction p, at
+ probability P. Note that the value returned is a real-number,
+ and not an integer. Depending on the use case you may want to
+ take either the floor or ceiling of the result. For example:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span>
+ <span class="identifier">p</span><span class="special">),</span>
+ <span class="identifier">P</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile_c">Quantile
+ from the complement of the probability</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The <span class="bold"><strong>smallest</strong></span> number of successes
+ that may be observed from n trials with success fraction p, at
+ probability P. Note that the value returned is a real-number,
+ and not an integer. Depending on the use case you may want to
+ take either the floor or ceiling of the result. For example:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span>
+ <span class="identifier">p</span><span class="special">),</span>
+ <span class="identifier">P</span><span class="special">))</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h8"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.examples"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.examples">Examples</a>
+ </h5>
+<p>
+ Various <a class="link" href="../../stat_tut/weg/binom_eg.html" title="Binomial Distribution Examples">worked examples</a>
+ are available illustrating the use of the binomial distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h9"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.accuracy"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ This distribution is implemented using the incomplete beta functions <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a> and <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>,
+ please refer to these functions for information on accuracy.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h10"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.implementation"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>p</em></span> is the probability that one
+ trial will be successful (the success fraction), <span class="emphasis"><em>n</em></span>
+ is the number of trials, <span class="emphasis"><em>k</em></span> is the number of successes,
+ <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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>
+ Implementation is in terms of <a class="link" href="../../sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function">ibeta_derivative</a>:
+ if <sub>n</sub>C<sub>k </sub> is the binomial coefficient of a and b, then we have:
+ </p>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../equations/binomial_ref1.png"></span>
+ </p>
+ <p>
+ Which can be evaluated as <code class="computeroutput"><span class="identifier">ibeta_derivative</span><span class="special">(</span><span class="identifier">k</span><span class="special">+</span><span class="number">1</span><span class="special">,</span> <span class="identifier">n</span><span class="special">-</span><span class="identifier">k</span><span class="special">+</span><span class="number">1</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span> <span class="special">/</span>
+ <span class="special">(</span><span class="identifier">n</span><span class="special">+</span><span class="number">1</span><span class="special">)</span></code>
+ </p>
+ <p>
+ The function <a class="link" href="../../sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function">ibeta_derivative</a>
+ is used here, since it has already been optimised for the lowest
+ possible error - indeed this is really just a thin wrapper around
+ part of the internals of the incomplete beta function.
+ </p>
+ <p>
+ There are also various special cases: refer to the code for details.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">I</span><span class="special">[</span><span class="identifier">sub</span> <span class="number">1</span><span class="special">-</span><span class="identifier">p</span><span class="special">](</span><span class="identifier">n</span> <span class="special">-</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">k</span> <span class="special">+</span> <span class="number">1</span><span class="special">)</span>
+ <span class="special">=</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">I</span><span class="special">[</span><span class="identifier">sub</span> <span class="identifier">p</span><span class="special">](</span><span class="identifier">k</span> <span class="special">+</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">n</span> <span class="special">-</span> <span class="identifier">k</span><span class="special">)</span>
+ <span class="special">=</span> <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a><span class="special">(</span><span class="identifier">k</span> <span class="special">+</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">n</span> <span class="special">-</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span></pre>
+ <p>
+ There are also various special cases: refer to the code for details.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>(k
+ + 1, n - k, p)
+ </p>
+ <p>
+ There are also various special cases: refer to the code for details.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Since the cdf is non-linear in variate <span class="emphasis"><em>k</em></span>
+ none of the inverse incomplete beta functions can be used here.
+ Instead the quantile is found numerically using a derivative
+ free method (<a class="link" href="../../internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748">TOMS
+ Algorithm 748</a>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Found numerically as above.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">p</span> <span class="special">*</span>
+ <span class="identifier">n</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">p</span> <span class="special">*</span>
+ <span class="identifier">n</span> <span class="special">*</span>
+ <span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">p</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">floor</span><span class="special">(</span><span class="identifier">p</span> <span class="special">*</span>
+ <span class="special">(</span><span class="identifier">n</span>
+ <span class="special">+</span> <span class="number">1</span><span class="special">))</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="number">2</span>
+ <span class="special">*</span> <span class="identifier">p</span><span class="special">)</span> <span class="special">/</span>
+ <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">n</span> <span class="special">*</span>
+ <span class="identifier">p</span> <span class="special">*</span>
+ <span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">p</span><span class="special">))</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="number">3</span> <span class="special">-</span>
+ <span class="special">(</span><span class="number">6</span>
+ <span class="special">/</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">+</span>
+ <span class="special">(</span><span class="number">1</span>
+ <span class="special">/</span> <span class="special">(</span><span class="identifier">n</span> <span class="special">*</span>
+ <span class="identifier">p</span> <span class="special">*</span>
+ <span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">p</span><span class="special">)))</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="number">6</span>
+ <span class="special">*</span> <span class="identifier">p</span>
+ <span class="special">*</span> <span class="identifier">q</span><span class="special">)</span> <span class="special">/</span>
+ <span class="special">(</span><span class="identifier">n</span>
+ <span class="special">*</span> <span class="identifier">p</span>
+ <span class="special">*</span> <span class="identifier">q</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ parameter estimation
+ </p>
+ </td>
+<td>
+ <p>
+ The member functions <code class="computeroutput"><span class="identifier">find_upper_bound_on_p</span></code>
+ <code class="computeroutput"><span class="identifier">find_lower_bound_on_p</span></code>
+ and <code class="computeroutput"><span class="identifier">find_number_of_trials</span></code>
+ are implemented in terms of the inverse incomplete beta functions
+ <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inv</a>,
+ <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>,
+ and <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_invb</a>
+ respectively
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.binomial_dist.h11"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.binomial_dist.references"></a></span><a class="link" href="binomial_dist.html#math_toolkit.dist_ref.dists.binomial_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/BinomialDistribution.html" target="_top">Weisstein,
+ Eric W. "Binomial Distribution." From MathWorld--A Wolfram
+ Web Resource</a>.
+ </li>
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/Beta_distribution" target="_top">Wikipedia
+ binomial distribution</a>.
+ </li>
+<li class="listitem">
+ <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda366i.htm" target="_top">NIST
+ Explorary Data Analysis</a>.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="beta_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="cauchy_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/cauchy_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/cauchy_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,295 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Cauchy-Lorentz Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="binomial_dist.html" title="Binomial Distribution">
+<link rel="next" href="chi_squared_dist.html" title="Chi Squared Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="binomial_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="chi_squared_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_cauchy_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.cauchy_dist"></a><a class="link" href="cauchy_dist.html" title="Cauchy-Lorentz Distribution">Cauchy-Lorentz
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">cauchy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">cauchy_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">cauchy_distribution</span><span class="special"><></span> <span class="identifier">cauchy</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">cauchy_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="identifier">cauchy_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">location</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</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="special">};</span>
+</pre>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Cauchy_distribution" target="_top">Cauchy-Lorentz
+ distribution</a> is named after Augustin Cauchy and Hendrik Lorentz.
+ It is a <a href="http://en.wikipedia.org/wiki/Probability_distribution" target="_top">continuous
+ probability distribution</a> with <a href="http://en.wikipedia.org/wiki/Probability_distribution" target="_top">probability
+ distribution function PDF</a> given by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/cauchy_ref1.png"></span>
+ </p>
+<p>
+ The location parameter x<sub>0</sub>   is the location of the peak of the distribution
+ (the mode of the distribution), while the scale parameter γ   specifies half
+ the width of the PDF at half the maximum height. If the location is zero,
+ and the scale 1, then the result is a standard Cauchy distribution.
+ </p>
+<p>
+ The distribution is important in physics as it is the solution to the differential
+ equation describing forced resonance, while in spectroscopy it is the description
+ of the line shape of spectral lines.
+ </p>
+<p>
+ The following graph shows how the distributions moves as the location parameter
+ changes:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/cauchy_pdf1.png" align="middle"></span>
+ </p>
+<p>
+ While the following graph shows how the shape (scale) parameter alters
+ the distribution:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/cauchy_pdf2.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.cauchy_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.cauchy_dist.member_functions"></a></span><a class="link" href="cauchy_dist.html#math_toolkit.dist_ref.dists.cauchy_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">cauchy_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>
+</pre>
+<p>
+ Constructs a Cauchy distribution, with location parameter <span class="emphasis"><em>location</em></span>
+ and scale parameter <span class="emphasis"><em>scale</em></span>. When these parameters take
+ their default values (location = 0, scale = 1) then the result is a Standard
+ Cauchy Distribution.
+ </p>
+<p>
+ Requires scale > 0, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </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 parameter of the 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 parameter of the distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.cauchy_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.cauchy_dist.non_member_accessors"></a></span><a class="link" href="cauchy_dist.html#math_toolkit.dist_ref.dists.cauchy_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ Note however that the Cauchy distribution does not have a mean, standard
+ deviation, etc. See <a class="link" href="../../pol_ref/assert_undefined.html" title="Mathematically Undefined Function Policies">mathematically
+ undefined function</a> to control whether these should fail to compile
+ with a BOOST_STATIC_ASSERTION_FAILURE, which is the default.
+ </p>
+<p>
+ Alternately, the functions <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>
+ and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>
+ will all return a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if called.
+ </p>
+<p>
+ The domain of the random variable is [-[max_value], +[min_value]].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.cauchy_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.cauchy_dist.accuracy"></a></span><a class="link" href="cauchy_dist.html#math_toolkit.dist_ref.dists.cauchy_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The Cauchy distribution is implemented in terms of the standard library
+ <code class="computeroutput"><span class="identifier">tan</span></code> and <code class="computeroutput"><span class="identifier">atan</span></code>
+ functions, and as such should have very low error rates.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.cauchy_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.cauchy_dist.implementation"></a></span><a class="link" href="cauchy_dist.html#math_toolkit.dist_ref.dists.cauchy_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table x<sub>0 </sub> is the location parameter of the distribution,
+ γ   is its scale parameter, <span class="emphasis"><em>x</em></span> is the random variate,
+ <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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 the relation: pdf = 1 / (π * γ * (1 + ((x - x<sub>0 </sub>) / γ)<sup>2</sup>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf and its complement
+ </p>
+ </td>
+<td>
+ <p>
+ The cdf is normally given by:
+ </p>
+ <p>
+ p = 0.5 + atan(x)/π
+ </p>
+ <p>
+ But that suffers from cancellation error as x -> -∞. So recall
+ that for <code class="computeroutput"><span class="identifier">x</span> <span class="special"><</span>
+ <span class="number">0</span></code>:
+ </p>
+ <p>
+ atan(x) = -π/2 - atan(1/x)
+ </p>
+ <p>
+ Substituting into the above we get:
+ </p>
+ <p>
+ p = -atan(1/x) ; x < 0
+ </p>
+ <p>
+ So the procedure is to calculate the cdf for -fabs(x) using the
+ above formula. Note that to factor in the location and scale
+ parameters you must substitute (x - x<sub>0 </sub>) / γ   for x in the above.
+ </p>
+ <p>
+ This procedure yields the smaller of <span class="emphasis"><em>p</em></span> and
+ <span class="emphasis"><em>q</em></span>, so the result may need subtracting from
+ 1 depending on whether we want the complement or not, and whether
+ <span class="emphasis"><em>x</em></span> is less than x<sub>0 </sub> or not.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ The same procedure is used irrespective of whether we're starting
+ from the probability or its complement. First the argument <span class="emphasis"><em>p</em></span>
+ is reduced to the range [-0.5, 0.5], then the relation
+ </p>
+ <p>
+ x = x<sub>0 </sub> ± γ   / tan(π * p)
+ </p>
+ <p>
+ is used to obtain the result. Whether we're adding or subtracting
+ from x<sub>0 </sub> is determined by whether we're starting from the complement
+ or not.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ The location parameter.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.cauchy_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.cauchy_dist.references"></a></span><a class="link" href="cauchy_dist.html#math_toolkit.dist_ref.dists.cauchy_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/Cauchy_distribution" target="_top">Cauchy-Lorentz
+ distribution</a>
+ </li>
+<li class="listitem">
+ <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3663.htm" target="_top">NIST
+ Exploratory Data Analysis</a>
+ </li>
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/CauchyDistribution.html" target="_top">Weisstein,
+ Eric W. "Cauchy Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="binomial_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="chi_squared_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/chi_squared_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/chi_squared_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,401 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chi Squared Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="cauchy_dist.html" title="Cauchy-Lorentz Distribution">
+<link rel="next" href="exp_dist.html" title="Exponential Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="cauchy_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="exp_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_chi_squared_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.chi_squared_dist"></a><a class="link" href="chi_squared_dist.html" title="Chi Squared Distribution">Chi Squared
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">chi_squared</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">chi_squared_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">chi_squared_distribution</span><span class="special"><></span> <span class="identifier">chi_squared</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">chi_squared_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">chi_squared_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">i</span><span class="special">);</span>
+
+ <span class="comment">// Accessor to parameter:</span>
+ <span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Parameter estimation:</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_degrees_of_freedom</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">difference_from_mean</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">sd</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">hint</span> <span class="special">=</span> <span class="number">100</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The Chi-Squared distribution is one of the most widely used distributions
+ in statistical tests. If χ<sub>i</sub>   are ν  
+independent, normally distributed random
+ variables with means μ<sub>i</sub>   and variances σ<sub>i</sub><sup>2</sup>, then the random variable:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/chi_squ_ref1.png"></span>
+ </p>
+<p>
+ is distributed according to the Chi-Squared distribution.
+ </p>
+<p>
+ The Chi-Squared distribution is a special case of the gamma distribution
+ and has a single parameter ν   that specifies the number of degrees of freedom.
+ The following graph illustrates how the distribution changes for different
+ values of ν:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/chi_squared_pdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.chi_squared_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.chi_squared_dist.member_functions"></a></span><a class="link" href="chi_squared_dist.html#math_toolkit.dist_ref.dists.chi_squared_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">chi_squared_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a Chi-Squared distribution with <span class="emphasis"><em>v</em></span> degrees
+ of freedom.
+ </p>
+<p>
+ Requires v > 0, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>v</em></span> from which this object was
+ constructed.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_degrees_of_freedom</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">difference_from_variance</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">variance</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">hint</span> <span class="special">=</span> <span class="number">100</span><span class="special">);</span>
+</pre>
+<p>
+ Estimates the sample size required to detect a difference from a nominal
+ variance in a Chi-Squared test for equal standard deviations.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">difference_from_variance</span></dt>
+<dd><p>
+ The difference from the assumed nominal variance that is to be detected:
+ Note that the sign of this value is critical, see below.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The maximum acceptable risk of rejecting the null hypothesis when
+ it is in fact true.
+ </p></dd>
+<dt><span class="term">beta</span></dt>
+<dd><p>
+ The maximum acceptable risk of falsely failing to reject the null
+ hypothesis.
+ </p></dd>
+<dt><span class="term">variance</span></dt>
+<dd><p>
+ The nominal variance being tested against.
+ </p></dd>
+<dt><span class="term">hint</span></dt>
+<dd><p>
+ An optional hint on where to start looking for a result: the current
+ sample size would be a good choice.
+ </p></dd>
+</dl>
+</div>
+<p>
+ Note that this calculation works with <span class="emphasis"><em>variances</em></span> and
+ not <span class="emphasis"><em>standard deviations</em></span>.
+ </p>
+<p>
+ The sign of the parameter <span class="emphasis"><em>difference_from_variance</em></span>
+ is important: the Chi Squared distribution is asymmetric, and the caller
+ must decide in advance whether they are testing for a variance greater
+ than a nominal value (positive <span class="emphasis"><em>difference_from_variance</em></span>)
+ or testing for a variance less than a nominal value (negative <span class="emphasis"><em>difference_from_variance</em></span>).
+ If the latter, then obviously it is a requirement that <code class="computeroutput"><span class="identifier">variance</span>
+ <span class="special">+</span> <span class="identifier">difference_from_variance</span>
+ <span class="special">></span> <span class="number">0</span></code>,
+ since no sample can have a negative variance!
+ </p>
+<p>
+ This procedure uses the method in Diamond, W. J. (1989). Practical Experiment
+ Designs, Van-Nostrand Reinhold, New York.
+ </p>
+<p>
+ See also section on Sample sizes required in <a href="http://www.itl.nist.gov/div898/handbook/prc/section2/prc232.htm" target="_top">the
+ NIST Engineering Statistics Handbook, Section 7.2.3.2</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.chi_squared_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.chi_squared_dist.non_member_accessors"></a></span><a class="link" href="chi_squared_dist.html#math_toolkit.dist_ref.dists.chi_squared_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ (We have followed the usual restriction of the mode to degrees of freedom
+ >= 2, but note that the maximum of the pdf is actually zero for degrees
+ of freedom from 2 down to 0, and provide an extended definition that would
+ avoid a discontinuity in the mode as alternative code in a comment).
+ </p>
+<p>
+ The domain of the random variable is [0, +∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.chi_squared_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.chi_squared_dist.examples"></a></span><a class="link" href="chi_squared_dist.html#math_toolkit.dist_ref.dists.chi_squared_dist.examples">Examples</a>
+ </h5>
+<p>
+ Various <a class="link" href="../../stat_tut/weg/cs_eg.html" title="Chi Squared Distribution Examples">worked examples</a>
+ are available illustrating the use of the Chi Squared Distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.chi_squared_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.chi_squared_dist.accuracy"></a></span><a class="link" href="chi_squared_dist.html#math_toolkit.dist_ref.dists.chi_squared_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The Chi-Squared distribution is implemented in terms of the <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">incomplete
+ gamma functions</a>: please refer to the accuracy data for those functions.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.chi_squared_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.chi_squared_dist.implementation"></a></span><a class="link" href="chi_squared_dist.html#math_toolkit.dist_ref.dists.chi_squared_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>v</em></span> is the number of degrees
+ of freedom of the distribution, <span class="emphasis"><em>x</em></span> is the random variate,
+ <span class="emphasis"><em>p</em></span> is the probability, and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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 the relation: pdf = <a class="link" href="../../sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function">gamma_p_derivative</a>(v
+ / 2, x / 2) / 2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>(v
+ / 2, x / 2)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>(v
+ / 2, x / 2)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = 2 * <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>(v
+ / 2, p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = 2 * <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>(v
+ / 2, p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ v
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ 2v
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ v - 2 (if v >= 2)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 2 * sqrt(2 / v) == sqrt(8 / v)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 3 + 12 / v
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ 12 / v
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.chi_squared_dist.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.chi_squared_dist.references"></a></span><a class="link" href="chi_squared_dist.html#math_toolkit.dist_ref.dists.chi_squared_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm" target="_top">NIST
+ Exploratory Data Analysis</a>
+ </li>
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/Chi-square_distribution" target="_top">Chi-square
+ distribution</a>
+ </li>
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/Chi-SquaredDistribution.html" target="_top">Weisstein,
+ Eric W. "Chi-Squared Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="cauchy_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="exp_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/exp_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/exp_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,318 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Exponential Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="chi_squared_dist.html" title="Chi Squared Distribution">
+<link rel="next" href="extreme_dist.html" title="Extreme Value Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="chi_squared_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="extreme_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_exp_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.exp_dist"></a><a class="link" href="exp_dist.html" title="Exponential Distribution">Exponential Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">exponential</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">exponential_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">exponential_distribution</span><span class="special"><></span> <span class="identifier">exponential</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">exponential_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="identifier">exponential_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">lambda</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+
+ <span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Exponential_distribution" target="_top">exponential
+ distribution</a> is a <a href="http://en.wikipedia.org/wiki/Probability_distribution" target="_top">continuous
+ probability distribution</a> with PDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/exponential_dist_ref1.png"></span>
+ </p>
+<p>
+ It is often used to model the time between independent events that happen
+ at a constant average rate.
+ </p>
+<p>
+ The following graph shows how the distribution changes for different values
+ of the rate parameter lambda:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/exponential_pdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.exp_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.exp_dist.member_functions"></a></span><a class="link" href="exp_dist.html#math_toolkit.dist_ref.dists.exp_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">exponential_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">lambda</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs an <a href="http://en.wikipedia.org/wiki/Exponential_distribution" target="_top">Exponential
+ distribution</a> with parameter <span class="emphasis"><em>lambda</em></span>. Lambda
+ is defined as the reciprocal of the scale parameter.
+ </p>
+<p>
+ Requires lambda > 0, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Accessor function returns the lambda parameter of the distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.exp_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.exp_dist.non_member_accessors"></a></span><a class="link" href="exp_dist.html#math_toolkit.dist_ref.dists.exp_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [0, +∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.exp_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.exp_dist.accuracy"></a></span><a class="link" href="exp_dist.html#math_toolkit.dist_ref.dists.exp_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The exponential distribution is implemented in terms of the standard library
+ functions <code class="computeroutput"><span class="identifier">exp</span></code>, <code class="computeroutput"><span class="identifier">log</span></code>, <code class="computeroutput"><span class="identifier">log1p</span></code>
+ and <code class="computeroutput"><span class="identifier">expm1</span></code> and as such should
+ have very low error rates.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.exp_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.exp_dist.implementation"></a></span><a class="link" href="exp_dist.html#math_toolkit.dist_ref.dists.exp_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table λ is the parameter lambda of the distribution, <span class="emphasis"><em>x</em></span>
+ is the random variate, <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q
+ = 1-p</em></span>.
+ </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 the relation: pdf = λ * exp(-λ * x)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = 1 - exp(-x * λ) = -expm1(-x * λ)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = exp(-x * λ)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = -log(1-p) / λ = -log1p(-p) / λ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = -log(q) / λ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ 1/λ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ standard deviation
+ </p>
+ </td>
+<td>
+ <p>
+ 1/λ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 9
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ 6
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.exp_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.exp_dist.references"></a></span><a class="link" href="exp_dist.html#math_toolkit.dist_ref.dists.exp_dist.references">references</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/ExponentialDistribution.html" target="_top">Weisstein,
+ Eric W. "Exponential Distribution." From MathWorld--A Wolfram
+ Web Resource</a>
+ </li>
+<li class="listitem">
+ <a href="http://documents.wolfram.com/calccenter/Functions/ListsMatrices/Statistics/ExponentialDistribution.html" target="_top">Wolfram
+ Mathematica calculator</a>
+ </li>
+<li class="listitem">
+ <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3667.htm" target="_top">NIST
+ Exploratory Data Analysis</a>
+ </li>
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/Exponential_distribution" target="_top">Wikipedia
+ Exponential distribution</a>
+ </li>
+</ul></div>
+<p>
+ (See also the reference documentation for the related <a class="link" href="extreme_dist.html" title="Extreme Value Distribution">Extreme
+ Distributions</a>.)
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <a href="http://www.worldscibooks.com/mathematics/p191.html" target="_top">Extreme
+ Value Distributions, Theory and Applications Samuel Kotz & Saralees
+ Nadarajah</a> discuss the relationship of the types of extreme
+ value distributions.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="chi_squared_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="extreme_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/extreme_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/extreme_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,321 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Extreme Value Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="exp_dist.html" title="Exponential Distribution">
+<link rel="next" href="f_dist.html" title="F Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="exp_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="f_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_extreme_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.extreme_dist"></a><a class="link" href="extreme_dist.html" title="Extreme Value Distribution">Extreme Value
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">extreme</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">extreme_value_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">extreme_value_distribution</span><span class="special"><></span> <span class="identifier">extreme_value</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">extreme_value_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="identifier">extreme_value_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">scale</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</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="special">};</span>
+</pre>
+<p>
+ There are various <a href="http://mathworld.wolfram.com/ExtremeValueDistribution.html" target="_top">extreme
+ value distributions</a> : this implementation represents the maximum
+ case, and is variously known as a Fisher-Tippett distribution, a log-Weibull
+ distribution or a Gumbel distribution.
+ </p>
+<p>
+ Extreme value theory is important for assessing risk for highly unusual
+ events, such as 100-year floods.
+ </p>
+<p>
+ More information can be found on the NIST,
+ Wikipedia,
+ Mathworld,
+ and <a href="http://en.wikipedia.org/wiki/Extreme_value_theory" target="_top">Extreme
+ value theory</a> websites.
+ </p>
+<p>
+ The relationship of the types of extreme value distributions, of which
+ this is but one, is discussed by <a href="http://www.worldscibooks.com/mathematics/p191.html" target="_top">Extreme
+ Value Distributions, Theory and Applications Samuel Kotz & Saralees
+ Nadarajah</a>.
+ </p>
+<p>
+ The distribution has a PDF given by:
+ </p>
+<p>
+ f(x) = (1/scale) e<sup>-(x-location)/scale</sup> e<sup>-e<sup>-(x-location)/scale</sup></sup>
+ </p>
+<p>
+ Which in the standard case (scale = 1, location = 0) reduces to:
+ </p>
+<p>
+ f(x) = e<sup>-x</sup>e<sup>-e<sup>-x</sup></sup>
+ </p>
+<p>
+ The following graph illustrates how the PDF varies with the location parameter:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/extreme_value_pdf1.png" align="middle"></span>
+ </p>
+<p>
+ And this graph illustrates how the PDF varies with the shape parameter:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/extreme_value_pdf2.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.extreme_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.extreme_dist.member_functions"></a></span><a class="link" href="extreme_dist.html#math_toolkit.dist_ref.dists.extreme_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">extreme_value_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>
+</pre>
+<p>
+ Constructs an Extreme Value distribution with the specified location and
+ scale parameters.
+ </p>
+<p>
+ Requires <code class="computeroutput"><span class="identifier">scale</span> <span class="special">></span>
+ <span class="number">0</span></code>, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </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 parameter of the 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 parameter of the distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.extreme_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.extreme_dist.non_member_accessors"></a></span><a class="link" href="extreme_dist.html#math_toolkit.dist_ref.dists.extreme_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random parameter is [-∞, +∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.extreme_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.extreme_dist.accuracy"></a></span><a class="link" href="extreme_dist.html#math_toolkit.dist_ref.dists.extreme_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The extreme value distribution is implemented in terms of the standard
+ library <code class="computeroutput"><span class="identifier">exp</span></code> and <code class="computeroutput"><span class="identifier">log</span></code> functions and as such should have
+ very low error rates.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.extreme_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.extreme_dist.implementation"></a></span><a class="link" href="extreme_dist.html#math_toolkit.dist_ref.dists.extreme_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table: <span class="emphasis"><em>a</em></span> is the location parameter,
+ <span class="emphasis"><em>b</em></span> is the scale parameter, <span class="emphasis"><em>x</em></span> is
+ the random variate, <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q
+ = 1-p</em></span>.
+ </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 the relation: pdf = exp((a-x)/b) * exp(-exp((a-x)/b)) /
+ b
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = exp(-exp((a-x)/b))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = -expm1(-exp((a-x)/b))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: a - log(-log(p)) * b
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: a - log(-log1p(-q)) * b
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ a + Euler-Mascheroni-constant
+ * b
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ standard deviation
+ </p>
+ </td>
+<td>
+ <p>
+ pi * b / sqrt(6)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ The same as the location parameter <span class="emphasis"><em>a</em></span>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 12 * sqrt(6) * zeta(3) / pi<sup>3</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 27 / 5
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ kurtosis - 3 or 12 / 5
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="exp_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="f_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/f_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/f_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,424 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>F Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="extreme_dist.html" title="Extreme Value Distribution">
+<link rel="next" href="gamma_dist.html" title="Gamma (and Erlang) Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="extreme_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="gamma_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_f_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.f_dist"></a><a class="link" href="f_dist.html" title="F Distribution">F Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">fisher_f</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">fisher_f_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">fisher_f_distribution</span><span class="special"><></span> <span class="identifier">fisher_f</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">fisher_f_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="comment">// Construct:</span>
+ <span class="identifier">fisher_f_distribution</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">j</span><span class="special">);</span>
+
+ <span class="comment">// Accessors:</span>
+ <span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom1</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom2</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">//namespaces</span>
+</pre>
+<p>
+ The F distribution is a continuous distribution that arises when testing
+ whether two samples have the same variance. If χ<sup>2</sup><sub>m</sub>   and χ<sup>2</sup><sub>n</sub>   are independent
+ variates each distributed as Chi-Squared with <span class="emphasis"><em>m</em></span> and
+ <span class="emphasis"><em>n</em></span> degrees of freedom, then the test statistic:
+ </p>
+<p>
+ F<sub>n,m</sub>   = (χ<sup>2</sup><sub>n</sub>   / n) / (χ<sup>2</sup><sub>m</sub>   / m)
+ </p>
+<p>
+ Is distributed over the range [0, ∞] with an F distribution, and has the
+ PDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/fisher_pdf.png"></span>
+ </p>
+<p>
+ The following graph illustrates how the PDF varies depending on the two
+ degrees of freedom parameters.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/fisher_f_pdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.f_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.f_dist.member_functions"></a></span><a class="link" href="f_dist.html#math_toolkit.dist_ref.dists.f_dist.member_functions">Member Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">fisher_f_distribution</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">df1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">df2</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs an F-distribution with numerator degrees of freedom <span class="emphasis"><em>df1</em></span>
+ and denominator degrees of freedom <span class="emphasis"><em>df2</em></span>.
+ </p>
+<p>
+ Requires that <span class="emphasis"><em>df1</em></span> and <span class="emphasis"><em>df2</em></span> are
+ both greater than zero, otherwise <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is called.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom1</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the numerator degrees of freedom parameter of the distribution.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom2</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the denominator degrees of freedom parameter of the distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.f_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.f_dist.non_member_accessors"></a></span><a class="link" href="f_dist.html#math_toolkit.dist_ref.dists.f_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [0, +∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.f_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.f_dist.examples"></a></span><a class="link" href="f_dist.html#math_toolkit.dist_ref.dists.f_dist.examples">Examples</a>
+ </h5>
+<p>
+ Various <a class="link" href="../../stat_tut/weg/f_eg.html" title="F Distribution Examples">worked examples</a>
+ are available illustrating the use of the F Distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.f_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.f_dist.accuracy"></a></span><a class="link" href="f_dist.html#math_toolkit.dist_ref.dists.f_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The normal distribution is implemented in terms of the <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">incomplete
+ beta function</a> and its <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">inverses</a>,
+ refer to those functions for accuracy data.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.f_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.f_dist.implementation"></a></span><a class="link" href="f_dist.html#math_toolkit.dist_ref.dists.f_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>v1</em></span> and <span class="emphasis"><em>v2</em></span>
+ are the first and second degrees of freedom parameters of the distribution,
+ <span class="emphasis"><em>x</em></span> is the random variate, <span class="emphasis"><em>p</em></span> is
+ the probability, and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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>
+ The usual form of the PDF is given by:
+ </p>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../equations/fisher_pdf.png"></span>
+ </p>
+ <p>
+ However, that form is hard to evaluate directly without incurring
+ problems with either accuracy or numeric overflow.
+ </p>
+ <p>
+ Direct differentiation of the CDF expressed in terms of the incomplete
+ beta function
+ </p>
+ <p>
+ led to the following two formulas:
+ </p>
+ <p>
+ f<sub>v1,v2</sub>(x) = y * <a class="link" href="../../sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function">ibeta_derivative</a>(v2
+ / 2, v1 / 2, v2 / (v2 + v1 * x))
+ </p>
+ <p>
+ with y = (v2 * v1) / ((v2 + v1 * x) * (v2 + v1 * x))
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ f<sub>v1,v2</sub>(x) = y * <a class="link" href="../../sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function">ibeta_derivative</a>(v1
+ / 2, v2 / 2, v1 * x / (v2 + v1 * x))
+ </p>
+ <p>
+ with y = (z * v1 - x * v1 * v1) / z<sup>2</sup>
+ </p>
+ <p>
+ and z = v2 + v1 * x
+ </p>
+ <p>
+ The first of these is used for v1 * x > v2, otherwise the
+ second is used.
+ </p>
+ <p>
+ The aim is to keep the <span class="emphasis"><em>x</em></span> argument to <a class="link" href="../../sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function">ibeta_derivative</a>
+ away from 1 to avoid rounding error.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relations:
+ </p>
+ <p>
+ p = <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>(v1
+ / 2, v2 / 2, v1 * x / (v2 + v1 * x))
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ p = <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>(v2
+ / 2, v1 / 2, v2 / (v2 + v1 * x))
+ </p>
+ <p>
+ The first is used for v1 * x > v2, otherwise the second is
+ used.
+ </p>
+ <p>
+ The aim is to keep the <span class="emphasis"><em>x</em></span> argument to <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a> well
+ away from 1 to avoid rounding error.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relations:
+ </p>
+ <p>
+ p = <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>(v1
+ / 2, v2 / 2, v1 * x / (v2 + v1 * x))
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ p = <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>(v2
+ / 2, v1 / 2, v2 / (v2 + v1 * x))
+ </p>
+ <p>
+ The first is used for v1 * x < v2, otherwise the second is
+ used.
+ </p>
+ <p>
+ The aim is to keep the <span class="emphasis"><em>x</em></span> argument to <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a> well
+ away from 1 to avoid rounding error.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ x = v2 * a / (v1 * b)
+ </p>
+ <p>
+ where:
+ </p>
+ <p>
+ a = <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>(v1
+ / 2, v2 / 2, p)
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ b = 1 - a
+ </p>
+ <p>
+ Quantities <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span>
+ are both computed by <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>
+ without the subtraction implied above.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ <p>
+ from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ x = v2 * a / (v1 * b)
+ </p>
+ <p>
+ where
+ </p>
+ <p>
+ a = <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inv</a>(v1
+ / 2, v2 / 2, p)
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ b = 1 - a
+ </p>
+ <p>
+ Quantities <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span>
+ are both computed by <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inv</a>
+ without the subtraction implied above.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ v2 / (v2 - 2)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ 2 * v2<sup>2 </sup> * (v1 + v2 - 2) / (v1 * (v2 - 2) * (v2 - 2) * (v2 - 4))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ v2 * (v1 - 2) / (v1 * (v2 + 2))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 2 * (v2 + 2 * v1 - 2) * sqrt((2 * v2 - 8) / (v1 * (v2 + v1 -
+ 2))) / (v2 - 6)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis and kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to, <a href="http://mathworld.wolfram.com/F-Distribution.html" target="_top">Weisstein,
+ Eric W. "F-Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="extreme_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="gamma_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/gamma_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/gamma_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,354 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Gamma (and Erlang) Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="f_dist.html" title="F Distribution">
+<link rel="next" href="geometric_dist.html" title="Geometric Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="f_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="geometric_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_gamma_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.gamma_dist"></a><a class="link" href="gamma_dist.html" title="Gamma (and Erlang) Distribution">Gamma (and
+ Erlang) Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">gamma_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="identifier">gamma_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">shape</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="keyword">const</span><span class="special">;</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="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The gamma distribution is a continuous probability distribution. When the
+ shape parameter is an integer then it is known as the Erlang Distribution.
+ It is also closely related to the Poisson and Chi Squared Distributions.
+ </p>
+<p>
+ When the shape parameter has an integer value, the distribution is the
+ Erlang distribution.
+ Since this can be produced by ensuring that the shape parameter has an
+ integer value > 0, the Erlang distribution is not separately implemented.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ To avoid potential confusion with the gamma functions, this distribution
+ does not provide the typedef:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">gamma_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">gamma</span><span class="special">;</span></pre>
+<p>
+ Instead if you want a double precision gamma distribution you can write
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gamma_distribution</span><span class="special"><></span> <span class="identifier">my_gamma</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span></pre>
+</td></tr>
+</table></div>
+<p>
+ For shape parameter <span class="emphasis"><em>k</em></span> and scale parameter θ   it is defined
+ by the probability density function:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/gamma_dist_ref1.png"></span>
+ </p>
+<p>
+ Sometimes an alternative formulation is used: given parameters α  = k and
+ β  = 1 / θ, then the distribution can be defined by the PDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/gamma_dist_ref2.png"></span>
+ </p>
+<p>
+ In this form the inverse scale parameter is called a <span class="emphasis"><em>rate parameter</em></span>.
+ </p>
+<p>
+ Both forms are in common usage: this library uses the first definition
+ throughout. Therefore to construct a Gamma Distribution from a <span class="emphasis"><em>rate
+ parameter</em></span>, you should pass the reciprocal of the rate as the
+ scale parameter.
+ </p>
+<p>
+ The following two graphs illustrate how the PDF of the gamma distribution
+ varies as the parameters vary:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/gamma1_pdf.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/gamma2_pdf.png" align="middle"></span>
+ </p>
+<p>
+ The <span class="bold"><strong>Erlang Distribution</strong></span> is the same as
+ the Gamma, but with the shape parameter an integer. It is often expressed
+ using a <span class="emphasis"><em>rate</em></span> rather than a <span class="emphasis"><em>scale</em></span>
+ as the second parameter (remember that the rate is the reciprocal of the
+ scale).
+ </p>
+<p>
+ Internally the functions used to implement the Gamma Distribution are already
+ optimised for small-integer arguments, so in general there should be no
+ great loss of performance from using a Gamma Distribution rather than a
+ dedicated Erlang Distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.gamma_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.gamma_dist.member_functions"></a></span><a class="link" href="gamma_dist.html#math_toolkit.dist_ref.dists.gamma_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">gamma_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">shape</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>
+</pre>
+<p>
+ Constructs a gamma distribution with shape <span class="emphasis"><em>shape</em></span> and
+ scale <span class="emphasis"><em>scale</em></span>.
+ </p>
+<p>
+ Requires that the shape and scale parameters are greater than zero, otherwise
+ calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </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 <span class="emphasis"><em>shape</em></span> parameter 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 <span class="emphasis"><em>scale</em></span> parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.gamma_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.gamma_dist.non_member_accessors"></a></span><a class="link" href="gamma_dist.html#math_toolkit.dist_ref.dists.gamma_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [0,+∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.gamma_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.gamma_dist.accuracy"></a></span><a class="link" href="gamma_dist.html#math_toolkit.dist_ref.dists.gamma_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The lognormal distribution is implemented in terms of the incomplete gamma
+ functions <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a> and
+ <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a> and their inverses
+ <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a> and
+ <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>: refer
+ to the accuracy data for those functions for more information.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.gamma_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.gamma_dist.implementation"></a></span><a class="link" href="gamma_dist.html#math_toolkit.dist_ref.dists.gamma_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>k</em></span> is the shape parameter of
+ the distribution, θ   is its scale parameter, <span class="emphasis"><em>x</em></span> is the
+ random variate, <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q
+ = 1-p</em></span>.
+ </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 the relation: pdf = <a class="link" href="../../sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function">gamma_p_derivative</a>(k,
+ x / θ) / θ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>(k,
+ x / θ)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>(k,
+ x / θ)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = θ  * <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>(k,
+ p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = θ  * <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>(k,
+ p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ kθ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ kθ<sup>2</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ (k-1)θ   for <span class="emphasis"><em>k>1</em></span> otherwise a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 2 / sqrt(k)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 3 + 6 / k
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ 6 / k
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="f_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="geometric_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/geometric_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/geometric_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,831 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Geometric Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="gamma_dist.html" title="Gamma (and Erlang) Distribution">
+<link rel="next" href="hypergeometric_dist.html" title="Hypergeometric Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="gamma_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="hypergeometric_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_geometric_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.geometric_dist"></a><a class="link" href="geometric_dist.html" title="Geometric Distribution">Geometric
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">geometric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">geometric_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">geometric_distribution</span><span class="special"><></span> <span class="identifier">geometric</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">geometric_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 from success_fraction:</span>
+ <span class="identifier">geometric_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+
+ <span class="comment">// Parameter accessors:</span>
+ <span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Bounds on success fraction:</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// alpha</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// alpha</span>
+
+ <span class="comment">// Estimate min/max number of trials:</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// Number of failures.</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// Success fraction.</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// Probability threshold alpha.</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// Number of failures.</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// Success fraction.</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// Probability threshold alpha.</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The class type <code class="computeroutput"><span class="identifier">geometric_distribution</span></code>
+ represents a <a href="http://en.wikipedia.org/wiki/geometric_distribution" target="_top">geometric
+ distribution</a>: it is used when there are exactly two mutually exclusive
+ outcomes of a <a href="http://en.wikipedia.org/wiki/Bernoulli_trial" target="_top">Bernoulli
+ trial</a>: these outcomes are labelled "success" and "failure".
+ </p>
+<p>
+ For <a href="http://en.wikipedia.org/wiki/Bernoulli_trial" target="_top">Bernoulli
+ trials</a> each with success fraction <span class="emphasis"><em>p</em></span>, the geometric
+ distribution gives the probability of observing <span class="emphasis"><em>k</em></span>
+ trials (failures, events, occurrences, or arrivals) before the first success.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ For this implementation, the set of trials <span class="bold"><strong>includes
+ zero</strong></span> (unlike another definition where the set of trials starts
+ at one, sometimes named <span class="emphasis"><em>shifted</em></span>).
+ </p></td></tr>
+</table></div>
+<p>
+ The geometric distribution assumes that success_fraction <span class="emphasis"><em>p</em></span>
+ is fixed for all <span class="emphasis"><em>k</em></span> trials.
+ </p>
+<p>
+ The probability that there are <span class="emphasis"><em>k</em></span> failures before the
+ first success is
+ </p>
+<p>
+    Pr(Y=<span class="emphasis"><em>k</em></span>) = (1-<span class="emphasis"><em>p</em></span>)<sup><span class="emphasis"><em>k</em></span></sup><span class="emphasis"><em>p</em></span>
+ </p>
+<p>
+ For example, when throwing a 6-face dice the success probability <span class="emphasis"><em>p</em></span>
+ = 1/6 = 0.1666 ̇  . Throwing repeatedly until a <span class="emphasis"><em>three</em></span>
+ appears, the probability distribution of the number of times <span class="emphasis"><em>not-a-three</em></span>
+ is thrown is geometric.
+ </p>
+<p>
+ Geometric distribution has the Probability Density Function PDF:
+ </p>
+<p>
+    (1-<span class="emphasis"><em>p</em></span>)<sup><span class="emphasis"><em>k</em></span></sup><span class="emphasis"><em>p</em></span>
+ </p>
+<p>
+ The following graph illustrates how the PDF and CDF vary for three examples
+ of the success fraction <span class="emphasis"><em>p</em></span>, (when considering the geometric
+ distribution as a continuous function),
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/geometric_pdf_2.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/geometric_cdf_2.png" align="middle"></span>
+ </p>
+<p>
+ and as discrete.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/geometric_pdf_discrete.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/geometric_cdf_discrete.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.related_distributions"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.related_distributions">Related
+ Distributions</a>
+ </h5>
+<p>
+ The geometric distribution is a special case of the <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a> with successes parameter <span class="emphasis"><em>r</em></span>
+ = 1, so only one first and only success is required : thus by definition
+    <code class="computeroutput"><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span> <span class="special">==</span>
+ <span class="identifier">negative_binomial</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span></code>
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">);</span>
+<span class="identifier">negative_binomial</span> <span class="identifier">nb</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">success_fraction</span><span class="special">);</span>
+<span class="identifier">geometric</span> <span class="identifier">g</span><span class="special">(</span><span class="identifier">success_fraction</span><span class="special">);</span>
+<span class="identifier">ASSERT</span><span class="special">(</span><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">g</span><span class="special">,</span> <span class="number">1</span><span class="special">));</span>
+</pre>
+<p>
+ This implementation uses real numbers for the computation throughout (because
+ it uses the <span class="bold"><strong>real-valued</strong></span> power and exponential
+ functions). So to obtain a conventional strictly-discrete geometric distribution
+ you must ensure that an integer value is provided for the number of trials
+ (random variable) <span class="emphasis"><em>k</em></span>, and take integer values (floor
+ or ceil functions) from functions that return a number of successes.
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The geometric distribution is a discrete distribution: internally, functions
+ like the <code class="computeroutput"><span class="identifier">cdf</span></code> and <code class="computeroutput"><span class="identifier">pdf</span></code> are treated "as if" they
+ are continuous functions, but in reality the results returned from these
+ functions only have meaning if an integer value is provided for the random
+ variate argument.
+ </p>
+<p>
+ The quantile function will by default return an integer result that has
+ been <span class="emphasis"><em>rounded outwards</em></span>. That is to say lower quantiles
+ (where the probability is less than 0.5) are rounded downward, and upper
+ quantiles (where the probability is greater than 0.5) are rounded upwards.
+ This behaviour ensures that if an X% quantile is requested, then <span class="emphasis"><em>at
+ least</em></span> the requested coverage will be present in the central
+ region, and <span class="emphasis"><em>no more than</em></span> the requested coverage
+ will be present in the tails.
+ </p>
+<p>
+ This behaviour can be changed so that the quantile functions are rounded
+ differently, or even return a real-valued result using <a class="link" href="../../pol_overview.html" title="Policy Overview">Policies</a>.
+ It is strongly recommended that you read the tutorial <a class="link" href="../../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a> before using the quantile
+ function on the geometric distribution. The <a class="link" href="../../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">reference
+ docs</a> describe how to change the rounding policy for these distributions.
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.member_functions"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<h6>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.constructor"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.constructor">Constructor</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">geometric_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ Constructor: <span class="emphasis"><em>p</em></span> or success_fraction is the probability
+ of success of a single trial.
+ </p>
+<p>
+ Requires: <code class="computeroutput"><span class="number">0</span> <span class="special"><=</span>
+ <span class="identifier">p</span> <span class="special"><=</span>
+ <span class="number">1</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.accessors"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.accessors">Accessors</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> <span class="comment">// successes / trials (0 <= p <= 1)</span>
+</pre>
+<p>
+ Returns the success_fraction parameter <span class="emphasis"><em>p</em></span> from which
+ this distribution was constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> <span class="comment">// required successes always one,</span>
+<span class="comment">// included for compatibility with negative binomial distribution</span>
+<span class="comment">// with successes r == 1.</span>
+</pre>
+<p>
+ Returns unity.
+ </p>
+<p>
+ The following functions are equivalent to those provided for the negative
+ binomial, with successes = 1, but are provided here for completeness.
+ </p>
+<p>
+ The best method of calculation for the following functions is disputed:
+ see <a class="link" href="binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a> and <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a> for more discussion.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.lower_bound_on_success_fraction_"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.lower_bound_on_success_fraction_">Lower
+ Bound on success_fraction Parameter <span class="emphasis"><em>p</em></span></a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">failures</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">)</span> <span class="comment">// (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.</span>
+</pre>
+<p>
+ Returns a <span class="bold"><strong>lower bound</strong></span> on the success fraction:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">failures</span></dt>
+<dd><p>
+ The total number of failures before the 1st success.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The largest acceptable probability that the true value of the success
+ fraction is <span class="bold"><strong>less than</strong></span> the value
+ returned.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example, if you observe <span class="emphasis"><em>k</em></span> failures from <span class="emphasis"><em>n</em></span>
+ trials the best estimate for the success fraction is simply 1/<span class="emphasis"><em>n</em></span>,
+ but if you want to be 95% sure that the true value is <span class="bold"><strong>greater
+ than</strong></span> some value, <span class="emphasis"><em>p<sub>min</sub></em></span>, then:
+ </p>
+<pre class="programlisting"><span class="identifier">p</span><sub>min</sub> <span class="special">=</span> <span class="identifier">geometric_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span>
+ <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span><span class="identifier">failures</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ <a class="link" href="../../stat_tut/weg/neg_binom_eg/neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">See
+ negative_binomial confidence interval example.</a>
+ </p>
+<p>
+ This function uses the Clopper-Pearson method of computing the lower bound
+ on the success fraction, whilst many texts refer to this method as giving
+ an "exact" result in practice it produces an interval that guarantees
+ <span class="emphasis"><em>at least</em></span> the coverage required, and may produce pessimistic
+ estimates for some combinations of <span class="emphasis"><em>failures</em></span> and <span class="emphasis"><em>successes</em></span>.
+ See:
+ </p>
+<p>
+ <a href="http://www.ucs.louisiana.edu/~kxk4695/Discrete_new.pdf" target="_top">Yong
+ Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some
+ Discrete Distributions. Computational statistics and data analysis, 2005,
+ vol. 48, no3, 605-621</a>.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.upper_bound_on_success_fraction_"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.upper_bound_on_success_fraction_">Upper
+ Bound on success_fraction Parameter p</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.</span>
+</pre>
+<p>
+ Returns an <span class="bold"><strong>upper bound</strong></span> on the success
+ fraction:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">trials</span></dt>
+<dd><p>
+ The total number of trials conducted.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The largest acceptable probability that the true value of the success
+ fraction is <span class="bold"><strong>greater than</strong></span> the value
+ returned.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example, if you observe <span class="emphasis"><em>k</em></span> successes from <span class="emphasis"><em>n</em></span>
+ trials the best estimate for the success fraction is simply <span class="emphasis"><em>k/n</em></span>,
+ but if you want to be 95% sure that the true value is <span class="bold"><strong>less
+ than</strong></span> some value, <span class="emphasis"><em>p<sub>max</sub></em></span>, then:
+ </p>
+<pre class="programlisting"><span class="identifier">p</span><sub>max</sub> <span class="special">=</span> <span class="identifier">geometric_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">k</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ <a class="link" href="../../stat_tut/weg/neg_binom_eg/neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">See
+ negative binomial confidence interval example.</a>
+ </p>
+<p>
+ This function uses the Clopper-Pearson method of computing the lower bound
+ on the success fraction, whilst many texts refer to this method as giving
+ an "exact" result in practice it produces an interval that guarantees
+ <span class="emphasis"><em>at least</em></span> the coverage required, and may produce pessimistic
+ estimates for some combinations of <span class="emphasis"><em>failures</em></span> and <span class="emphasis"><em>successes</em></span>.
+ See:
+ </p>
+<p>
+ <a href="http://www.ucs.louisiana.edu/~kxk4695/Discrete_new.pdf" target="_top">Yong
+ Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some
+ Discrete Distributions. Computational statistics and data analysis, 2005,
+ vol. 48, no3, 605-621</a>.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h6"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.estimating_number_of_trials_to_e"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.estimating_number_of_trials_to_e">Estimating
+ Number of Trials to Ensure at Least a Certain Number of Failures</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of failures.</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction.</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// probability threshold (0.05 equivalent to 95%).</span>
+</pre>
+<p>
+ This functions estimates the number of trials required to achieve a certain
+ probability that <span class="bold"><strong>more than <span class="emphasis"><em>k</em></span>
+ failures will be observed</strong></span>.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">k</span></dt>
+<dd><p>
+ The target number of failures to be observed.
+ </p></dd>
+<dt><span class="term">p</span></dt>
+<dd><p>
+ The probability of <span class="emphasis"><em>success</em></span> for each trial.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The maximum acceptable <span class="emphasis"><em>risk</em></span> that only <span class="emphasis"><em>k</em></span>
+ failures or fewer will be observed.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">geometric_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the smallest number of trials we must conduct to be 95% (1-0.05)
+ sure of seeing 10 failures that occur with frequency one half.
+ </p>
+<p>
+ <a class="link" href="../../stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html" title="Estimating Sample Sizes for the Negative Binomial.">Worked
+ Example.</a>
+ </p>
+<p>
+ This function uses numeric inversion of the geometric distribution to obtain
+ the result: another interpretation of the result is that it finds the number
+ of trials (failures) that will lead to an <span class="emphasis"><em>alpha</em></span> probability
+ of observing <span class="emphasis"><em>k</em></span> failures or fewer.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h7"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.estimating_number_of_trials_to_0"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.estimating_number_of_trials_to_0">Estimating
+ Number of Trials to Ensure a Maximum Number of Failures or Less</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of failures.</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction.</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// probability threshold (0.05 equivalent to 95%).</span>
+</pre>
+<p>
+ This functions estimates the maximum number of trials we can conduct and
+ achieve a certain probability that <span class="bold"><strong>k failures or
+ fewer will be observed</strong></span>.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">k</span></dt>
+<dd><p>
+ The maximum number of failures to be observed.
+ </p></dd>
+<dt><span class="term">p</span></dt>
+<dd><p>
+ The probability of <span class="emphasis"><em>success</em></span> for each trial.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The maximum acceptable <span class="emphasis"><em>risk</em></span> that more than
+ <span class="emphasis"><em>k</em></span> failures will be observed.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">geometric_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">-</span><span class="number">1.0</span><span class="special">/</span><span class="number">1000000</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the largest number of trials we can conduct and still be 95% sure
+ of seeing no failures that occur with frequency one in one million.
+ </p>
+<p>
+ This function uses numeric inversion of the geometric distribution to obtain
+ the result: another interpretation of the result, is that it finds the
+ number of trials that will lead to an <span class="emphasis"><em>alpha</em></span> probability
+ of observing more than k failures.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h8"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.non_member_accessors"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ However it's worth taking a moment to define what these actually mean in
+ the context of this distribution:
+ </p>
+<div class="table">
+<a name="math_toolkit.dist_ref.dists.geometric_dist.meaning_of_the_non_member_access"></a><p class="title"><b>Table 2.2. Meaning of the non-member accessors.</b></p>
+<div class="table-contents"><table class="table" summary="Meaning of the non-member accessors.">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Meaning
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density
+ Function</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The probability of obtaining <span class="bold"><strong>exactly k
+ failures</strong></span> from <span class="emphasis"><em>k</em></span> trials with success
+ fraction p. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">)</span></pre>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution
+ Function</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The probability of obtaining <span class="bold"><strong>k failures
+ or fewer</strong></span> from <span class="emphasis"><em>k</em></span> trials with success
+ fraction p and success on the last trial. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">)</span></pre>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.ccdf">Complement of
+ the Cumulative Distribution Function</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The probability of obtaining <span class="bold"><strong>more than
+ k failures</strong></span> from <span class="emphasis"><em>k</em></span> trials with
+ success fraction p and success on the last trial. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">))</span></pre>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The <span class="bold"><strong>greatest</strong></span> number of failures
+ <span class="emphasis"><em>k</em></span> expected to be observed from <span class="emphasis"><em>k</em></span>
+ trials with success fraction <span class="emphasis"><em>p</em></span>, at probability
+ <span class="emphasis"><em>P</em></span>. Note that the value returned is a real-number,
+ and not an integer. Depending on the use case you may want to
+ take either the floor or ceiling of the real result. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">P</span><span class="special">)</span></pre>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile_c">Quantile
+ from the complement of the probability</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The <span class="bold"><strong>smallest</strong></span> number of failures
+ <span class="emphasis"><em>k</em></span> expected to be observed from <span class="emphasis"><em>k</em></span>
+ trials with success fraction <span class="emphasis"><em>p</em></span>, at probability
+ <span class="emphasis"><em>P</em></span>. Note that the value returned is a real-number,
+ and not an integer. Depending on the use case you may want to
+ take either the floor or ceiling of the real result. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">P</span><span class="special">))</span></pre>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h9"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.accuracy"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ This distribution is implemented using the pow and exp functions, so most
+ results are accurate within a few epsilon for the RealType. For extreme
+ values of <code class="computeroutput"><span class="keyword">double</span></code> <span class="emphasis"><em>p</em></span>,
+ for example 0.9999999999, accuracy can fall significantly, for example
+ to 10 decimal digits (from 16).
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.geometric_dist.h10"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.implementation"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table, <span class="emphasis"><em>p</em></span> is the probability that
+ any one trial will be successful (the success fraction), <span class="emphasis"><em>k</em></span>
+ is the number of failures, <span class="emphasis"><em>p</em></span> is the probability and
+ <span class="emphasis"><em>q = 1-p</em></span>, <span class="emphasis"><em>x</em></span> is the given probability
+ to estimate the expected number of failures using the quantile.
+ </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>
+ pdf = p * pow(q, k)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ cdf = 1 - q<sup>k=1</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ exp(log1p(-p) * (k+1))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ k = log1p(-x) / log1p(-p) -1
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ k = log(x) / log1p(-p) -1
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ (1-p)/p
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ (1-p)/p²
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ (2-p)/√q
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 9+p²/q
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ 6 +p²/q
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ parameter estimation member functions
+ </p>
+ </td>
+<td>
+ <p>
+ See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_lower_bound_on_p</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_upper_bound_on_p</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_minimum_number_of_trials</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_maximum_number_of_trials</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="gamma_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="hypergeometric_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/hypergeometric_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/hypergeometric_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,329 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Hypergeometric Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="geometric_dist.html" title="Geometric Distribution">
+<link rel="next" href="inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="geometric_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="inverse_chi_squared_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_hypergeometric_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.hypergeometric_dist"></a><a class="link" href="hypergeometric_dist.html" title="Hypergeometric Distribution">Hypergeometric
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">hypergeometric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">hypergeometric_distribution</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">hypergeometric_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">// Construct:</span>
+ <span class="identifier">hypergeometric_distribution</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">r</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">N</span><span class="special">);</span>
+ <span class="comment">// Accessors:</span>
+ <span class="keyword">unsigned</span> <span class="identifier">total</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">unsigned</span> <span class="identifier">defective</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">unsigned</span> <span class="identifier">sample_count</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="keyword">typedef</span> <span class="identifier">hypergeometric_distribution</span><span class="special"><></span> <span class="identifier">hypergeometric</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The hypergeometric distribution describes the number of "events"
+ <span class="emphasis"><em>k</em></span> from a sample <span class="emphasis"><em>n</em></span> drawn from
+ a total population <span class="emphasis"><em>N</em></span> <span class="emphasis"><em>without replacement</em></span>.
+ </p>
+<p>
+ Imagine we have a sample of <span class="emphasis"><em>N</em></span> objects of which <span class="emphasis"><em>r</em></span>
+ are "defective" and N-r are "not defective" (the terms
+ "success/failure" or "red/blue" are also used). If
+ we sample <span class="emphasis"><em>n</em></span> items <span class="emphasis"><em>without replacement</em></span>
+ then what is the probability that exactly <span class="emphasis"><em>k</em></span> items
+ in the sample are defective? The answer is given by the pdf of the hypergeometric
+ distribution <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">k</span><span class="special">;</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span>
+ <span class="identifier">N</span><span class="special">)</span></code>,
+ whilst the probability of <span class="emphasis"><em>k</em></span> defectives or fewer is
+ given by F(k; r, n, N), where F(k) is the CDF of the hypergeometric distribution.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Unlike almost all of the other distributions in this library, the hypergeometric
+ distribution is strictly discrete: it can not be extended to real valued
+ arguments of its parameters or random variable.
+ </p></td></tr>
+</table></div>
+<p>
+ The following graph shows how the distribution changes as the proportion
+ of "defective" items changes, while keeping the population and
+ sample sizes constant:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/hypergeometric_pdf_1.png" align="middle"></span>
+ </p>
+<p>
+ Note that since the distribution is symmetrical in parameters <span class="emphasis"><em>n</em></span>
+ and <span class="emphasis"><em>r</em></span>, if we change the sample size and keep the population
+ and proportion "defective" the same then we obtain basically
+ the same graphs:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/hypergeometric_pdf_2.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.hypergeometric_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.hypergeometric_dist.member_functions"></a></span><a class="link" href="hypergeometric_dist.html#math_toolkit.dist_ref.dists.hypergeometric_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">hypergeometric_distribution</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">r</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">N</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a hypergeometric distribution with with a population of <span class="emphasis"><em>N</em></span>
+ objects, of which <span class="emphasis"><em>r</em></span> are defective, and from which
+ <span class="emphasis"><em>n</em></span> are sampled.
+ </p>
+<pre class="programlisting"><span class="keyword">unsigned</span> <span class="identifier">total</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the total number of objects <span class="emphasis"><em>N</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">unsigned</span> <span class="identifier">defective</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the number of objects <span class="emphasis"><em>r</em></span> in population <span class="emphasis"><em>N</em></span>
+ which are defective.
+ </p>
+<pre class="programlisting"><span class="keyword">unsigned</span> <span class="identifier">sample_count</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the number of objects <span class="emphasis"><em>n</em></span> which are sampled
+ from the population <span class="emphasis"><em>N</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.hypergeometric_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.hypergeometric_dist.non_member_accessors"></a></span><a class="link" href="hypergeometric_dist.html#math_toolkit.dist_ref.dists.hypergeometric_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is the unsigned integers in the range
+ [max(0, n + r - N), min(n, r)]. A <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is raised if the random variable is outside this range, or is not an integral
+ value.
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The quantile function will by default return an integer result that has
+ been <span class="emphasis"><em>rounded outwards</em></span>. That is to say lower quantiles
+ (where the probability is less than 0.5) are rounded downward, and upper
+ quantiles (where the probability is greater than 0.5) are rounded upwards.
+ This behaviour ensures that if an X% quantile is requested, then <span class="emphasis"><em>at
+ least</em></span> the requested coverage will be present in the central
+ region, and <span class="emphasis"><em>no more than</em></span> the requested coverage
+ will be present in the tails.
+ </p>
+<p>
+ This behaviour can be changed so that the quantile functions are rounded
+ differently using <a class="link" href="../../pol_overview.html" title="Policy Overview">Policies</a>.
+ It is strongly recommended that you read the tutorial <a class="link" href="../../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a> before using the quantile
+ function on the Hypergeometric distribution. The <a class="link" href="../../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">reference
+ docs</a> describe how to change the rounding policy for these distributions.
+ </p>
+<p>
+ However, note that the implementation method of the quantile function
+ always returns an integral value, therefore attempting to use a <a class="link" href="../../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> that requires (or produces) a real valued
+ result will result in a compile time error.
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.hypergeometric_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.hypergeometric_dist.accuracy"></a></span><a class="link" href="hypergeometric_dist.html#math_toolkit.dist_ref.dists.hypergeometric_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ For small N such that <code class="computeroutput"><span class="identifier">N</span> <span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">max_factorial</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">value</span></code>
+ then table based lookup of the results gives an accuracy to a few epsilon.
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">max_factorial</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">value</span></code> is 170 at double or long double
+ precision.
+ </p>
+<p>
+ For larger N such that <code class="computeroutput"><span class="identifier">N</span> <span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">prime</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">max_prime</span><span class="special">)</span></code> then only basic arithmetic is required
+ for the calculation and the accuracy is typically < 20 epsilon. This
+ takes care of N up to 104729.
+ </p>
+<p>
+ For <code class="computeroutput"><span class="identifier">N</span> <span class="special">></span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">prime</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">max_prime</span><span class="special">)</span></code>
+ then accuracy quickly degrades, with 5 or 6 decimal digits being lost for
+ N = 110000.
+ </p>
+<p>
+ In general for very large N, the user should expect to loose log<sub>10</sub>N decimal
+ digits of precision during the calculation, with the results becoming meaningless
+ for N >= 10<sup>15</sup>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.hypergeometric_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.hypergeometric_dist.testing"></a></span><a class="link" href="hypergeometric_dist.html#math_toolkit.dist_ref.dists.hypergeometric_dist.testing">Testing</a>
+ </h5>
+<p>
+ There are three sets of tests: our implementation is tested against a table
+ of values produced by Mathematica's implementation of this distribution.
+ We also sanity check our implementation against some spot values computed
+ using the online calculator here http://stattrek.com/Tables/Hypergeometric.aspx.
+ Finally we test accuracy against some high precision test data using this
+ implementation and NTL::RR.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.hypergeometric_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.hypergeometric_dist.implementation"></a></span><a class="link" href="hypergeometric_dist.html#math_toolkit.dist_ref.dists.hypergeometric_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ The PDF can be calculated directly using the formula:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hypergeometric1.png"></span>
+ </p>
+<p>
+ However, this can only be used directly when the largest of the factorials
+ is guaranteed not to overflow the floating point representation used. This
+ formula is used directly when <code class="computeroutput"><span class="identifier">N</span>
+ <span class="special"><</span> <span class="identifier">max_factorial</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">value</span></code>
+ in which case table lookup of the factorials gives a rapid and accurate
+ implementation method.
+ </p>
+<p>
+ For larger <span class="emphasis"><em>N</em></span> the method described in "An Accurate
+ Computation of the Hypergeometric Distribution Function", Trong Wu,
+ ACM Transactions on Mathematical Software, Vol. 19, No. 1, March 1993,
+ Pages 33-43 is used. The method relies on the fact that there is an easy
+ method for factorising a factorial into the product of prime numbers:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hypergeometric2.png"></span>
+ </p>
+<p>
+ Where p<sub>i</sub> is the i'th prime number, and e<sub>i</sub> is a small positive integer or
+ zero, which can be calculated via:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hypergeometric3.png"></span>
+ </p>
+<p>
+ Further we can combine the factorials in the expression for the PDF to
+ yield the PDF directly as the product of prime numbers:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hypergeometric4.png"></span>
+ </p>
+<p>
+ With this time the exponents e<sub>i</sub> being either positive, negative or zero.
+ Indeed such a degree of cancellation occurs in the calculation of the e<sub>i</sub> that
+ many are zero, and typically most have a magnitude or no more than 1 or
+ 2.
+ </p>
+<p>
+ Calculation of the product of the primes requires some care to prevent
+ numerical overflow, we use a novel recursive method which splits the calculation
+ into a series of sub-products, with a new sub-product started each time
+ the next multiplication would cause either overflow or underflow. The sub-products
+ are stored in a linked list on the program stack, and combined in an order
+ that will guarantee no overflow or unnecessary-underflow once the last
+ sub-product has been calculated.
+ </p>
+<p>
+ This method can be used as long as N is smaller than the largest prime
+ number we have stored in our table of primes (currently 104729). The method
+ is relatively slow (calculating the exponents requires the most time),
+ but requires only a small number of arithmetic operations to calculate
+ the result (indeed there is no shorter method involving only basic arithmetic
+ once the exponents have been found), the method is therefore much more
+ accurate than the alternatives.
+ </p>
+<p>
+ For much larger N, we can calculate the PDF from the factorials using either
+ lgamma, or by directly combining lanczos approximations to avoid calculating
+ via logarithms. We use the latter method, as it is usually 1 or 2 decimal
+ digits more accurate than computing via logarithms with lgamma. However,
+ in this area where N > 104729, the user should expect to loose around
+ log<sub>10</sub>N decimal digits during the calculation in the worst case.
+ </p>
+<p>
+ The CDF and its complement is calculated by directly summing the PDF's.
+ We start by deciding whether the CDF, or its complement, is likely to be
+ the smaller of the two and then calculate the PDF at <span class="emphasis"><em>k</em></span>
+ (or <span class="emphasis"><em>k+1</em></span> if we're calculating the complement) and calculate
+ successive PDF values via the recurrence relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hypergeometric5.png"></span>
+ </p>
+<p>
+ Until we either reach the end of the distributions domain, or the next
+ PDF value to be summed would be too small to affect the result.
+ </p>
+<p>
+ The quantile is calculated in a similar manner to the CDF: we first guess
+ which end of the distribution we're nearer to, and then sum PDFs starting
+ from the end of the distribution this time, until we have some value <span class="emphasis"><em>k</em></span>
+ that gives the required CDF.
+ </p>
+<p>
+ The median is simply the quantile at 0.5, and the remaining properties
+ are calculated via:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/hypergeometric6.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="geometric_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="inverse_chi_squared_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,461 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Inverse Chi Squared Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="hypergeometric_dist.html" title="Hypergeometric Distribution">
+<link rel="next" href="inverse_gamma_dist.html" title="Inverse Gamma Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="hypergeometric_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="inverse_gamma_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_inverse_chi_squared_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist"></a><a class="link" href="inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution">Inverse
+ Chi Squared Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">inverse_chi_squared</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">inverse_chi_squared_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="identifier">inverse_chi_squared_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">df</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span> <span class="comment">// Not explicitly scaled, default 1/df.</span>
+ <span class="identifier">inverse_chi_squared_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">df</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">df</span><span class="special">);</span> <span class="comment">// Scaled.</span>
+
+ <span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <span class="comment">// Default 1.</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">// Optional scale [xi] (variance), default 1/degrees_of_freedom.</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost // namespace math</span>
+</pre>
+<p>
+ The inverse chi squared distribution is a continuous probability distribution
+ of the <span class="bold"><strong>reciprocal</strong></span> of a variable distributed
+ according to the chi squared distribution.
+ </p>
+<p>
+ The sources below give confusingly different formulae using different symbols
+ for the distribution pdf, but they are all the same, or related by a change
+ of variable, or choice of scale.
+ </p>
+<p>
+ Two constructors are available to implement both the scaled and (implicitly)
+ unscaled versions.
+ </p>
+<p>
+ The main version has an explicit scale parameter which implements the
+ <a href="http://en.wikipedia.org/wiki/Scaled-inverse-chi-square_distribution" target="_top">scaled
+ inverse chi_squared distribution</a>.
+ </p>
+<p>
+ A second version has an implicit scale = 1/degrees of freedom and gives
+ the 1st definition in the <a href="http://en.wikipedia.org/wiki/Inverse-chi-square_distribution" target="_top">Wikipedia
+ inverse chi_squared distribution</a>. The 2nd Wikipedia inverse chi_squared
+ distribution definition can be implemented by explicitly specifying a scale
+ = 1.
+ </p>
+<p>
+ Both definitions are also available in Wolfram Mathematica and in The R Project for Statistical Computing
+ (geoR) with default scale = 1/degrees of freedom.
+ </p>
+<p>
+ See
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Inverse chi_squared distribution http://en.wikipedia.org/wiki/Inverse-chi-square_distribution
+ </li>
+<li class="listitem">
+ Scaled inverse chi_squared distributionhttp://en.wikipedia.org/wiki/Scaled-inverse-chi-square_distribution
+ </li>
+<li class="listitem">
+ R inverse chi_squared distribution functions <a href="http://hosho.ees.hokudai.ac.jp/~kubo/Rdoc/library/geoR/html/InvChisquare.html" target="_top">R
+ </a>
+ </li>
+<li class="listitem">
+ Inverse chi_squared distribution functions <a href="http://mathworld.wolfram.com/InverseChi-SquaredDistribution.html" target="_top">Weisstein,
+ Eric W. "Inverse Chi-Squared Distribution." From MathWorld--A
+ Wolfram Web Resource.</a>
+ </li>
+<li class="listitem">
+ Inverse chi_squared distribution reference <a href="http://reference.wolfram.com/mathematica/ref/InverseChiSquareDistribution.html" target="_top">Weisstein,
+ Eric W. "Inverse Chi-Squared Distribution reference." From
+ Wolfram Mathematica.</a>
+ </li>
+</ul></div>
+<p>
+ The inverse_chi_squared distribution is used in <a href="http://en.wikipedia.org/wiki/Bayesian_statistics" target="_top">Bayesian
+ statistics</a>: the scaled inverse chi-square is conjugate prior for
+ the normal distribution with known mean, model parameter σ² (variance).
+ </p>
+<p>
+ See <a href="http://en.wikipedia.org/wiki/Conjugate_prior" target="_top">conjugate
+ priors including a table of distributions and their priors.</a>
+ </p>
+<p>
+ See also <a class="link" href="inverse_gamma_dist.html" title="Inverse Gamma Distribution">Inverse
+ Gamma Distribution</a> and <a class="link" href="chi_squared_dist.html" title="Chi Squared Distribution">Chi
+ Squared Distribution</a>.
+ </p>
+<p>
+ The inverse_chi_squared distribution is a special case of a inverse_gamma
+ distribution with ν (degrees_of_freedom) shape (α) and scale (β) where
+ </p>
+<p>
+    α= ν /2 and β = ½.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ This distribution <span class="bold"><strong>does</strong></span> provide the typedef:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">inverse_chi_squared_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">inverse_chi_squared</span><span class="special">;</span></pre>
+<p>
+ If you want a <code class="computeroutput"><span class="keyword">double</span></code> precision
+ inverse_chi_squared distribution you can use
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">inverse_chi_squared_distribution</span><span class="special"><></span></pre>
+<p>
+ or you can write <code class="computeroutput"><span class="identifier">inverse_chi_squared</span>
+ <span class="identifier">my_invchisqr</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">);</span></code>
+ </p>
+</td></tr>
+</table></div>
+<p>
+ For degrees of freedom parameter ν, the (<span class="bold"><strong>unscaled</strong></span>)
+ inverse chi_squared distribution is defined by the probability density
+ function (PDF):
+ </p>
+<p>
+    f(x;ν) = 2<sup>-ν/2</sup> x<sup>-ν/2-1</sup> e<sup>-1/2x</sup> / Γ(ν/2)
+ </p>
+<p>
+ and Cumulative Density Function (CDF)
+ </p>
+<p>
+    F(x;ν) = Γ(ν/2, 1/2x) / Γ(ν/2)
+ </p>
+<p>
+ For degrees of freedom parameter ν and scale parameter ξ, the <span class="bold"><strong>scaled</strong></span>
+ inverse chi_squared distribution is defined by the probability density
+ function (PDF):
+ </p>
+<p>
+    f(x;ν, ξ) = (ξν/2)<sup>ν/2</sup> e<sup>-νξ/2x</sup> x<sup>-1-ν/2</sup> / Γ(ν/2)
+ </p>
+<p>
+ and Cumulative Density Function (CDF)
+ </p>
+<p>
+    F(x;ν, ξ) = Γ(ν/2, νξ/2x) / Γ(ν/2)
+ </p>
+<p>
+ The following graphs illustrate how the PDF and CDF of the inverse chi_squared
+ distribution varies for a few values of parameters ν and ξ:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/inverse_chi_squared_pdf.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/inverse_chi_squared_cdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.member_functions"></a></span><a class="link" href="inverse_chi_squared_dist.html#math_toolkit.dist_ref.dists.inverse_chi_squared_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">inverse_chi_squared_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">df</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span> <span class="comment">// Implicitly scaled 1/df.</span>
+<span class="identifier">inverse_chi_squared_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">df</span> <span class="special">=</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">scale</span><span class="special">);</span> <span class="comment">// Explicitly scaled.</span>
+</pre>
+<p>
+ Constructs an inverse chi_squared distribution with ν degrees of freedom
+ <span class="emphasis"><em>df</em></span>, and scale <span class="emphasis"><em>scale</em></span> with default
+ value 1/df.
+ </p>
+<p>
+ Requires that the degrees of freedom ν parameter is greater than zero, otherwise
+ calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the degrees_of_freedom ν parameter 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 ξ parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.non_member_accessors"></a></span><a class="link" href="inverse_chi_squared_dist.html#math_toolkit.dist_ref.dists.inverse_chi_squared_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variate is [0,+∞].
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Unlike some definitions, this implementation supports a random variate
+ equal to zero as a special case, returning zero for both pdf and cdf.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.accuracy"></a></span><a class="link" href="inverse_chi_squared_dist.html#math_toolkit.dist_ref.dists.inverse_chi_squared_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The inverse gamma distribution is implemented in terms of the incomplete
+ gamma functions like the <a class="link" href="inverse_gamma_dist.html" title="Inverse Gamma Distribution">Inverse
+ Gamma Distribution</a> that use <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>
+ and <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a> and their
+ inverses <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>
+ and <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>:
+ refer to the accuracy data for those functions for more information. But
+ in general, gamma (and thus inverse gamma) results are often accurate to
+ a few epsilon, >14 decimal digits accuracy for 64-bit double. unless
+ iteration is involved, as for the estimation of degrees of freedom.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.implementation"></a></span><a class="link" href="inverse_chi_squared_dist.html#math_toolkit.dist_ref.dists.inverse_chi_squared_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table ν is the degrees of freedom parameter and ξ is the scale
+ parameter of the distribution, <span class="emphasis"><em>x</em></span> is the random variate,
+ <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q = 1-p</em></span>
+ its complement. Parameters α for shape and β for scale are used for the inverse
+ gamma function: α = ν/2 and β = ν * ξ/2.
+ </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 the relation: pdf = <a class="link" href="../../sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function">gamma_p_derivative</a>(α,
+ β/ x, β) / x * x
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>(α,
+ β / x)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>(α,
+ β / x)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = β  / <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>(α,
+ p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = α  / <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>(α,
+ q)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ ν * ξ / (ν + 2)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ median
+ </p>
+ </td>
+<td>
+ <p>
+ no closed form analytic equation is known, but is evaluated as
+ quantile(0.5)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ νξ / (ν - 2) for ν > 2, else a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ 2 ν² ξ² / ((ν -2)² (ν -4)) for ν >4, else a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 4 √2 √(ν-4) /(ν-6) for ν >6, else a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis_excess
+ </p>
+ </td>
+<td>
+ <p>
+ 12 * (5ν - 22) / ((ν - 6) * (ν - 8)) for ν >8, else a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 3 + 12 * (5ν - 22) / ((ν - 6) * (ν-8)) for ν >8, else a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_chi_squared_dist.references"></a></span><a class="link" href="inverse_chi_squared_dist.html#math_toolkit.dist_ref.dists.inverse_chi_squared_dist.references">References</a>
+ </h5>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Bayesian Data Analysis, Andrew Gelman, John B. Carlin, Hal S. Stern,
+ Donald B. Rubin, ISBN-13: 978-1584883883, Chapman & Hall; 2 edition
+ (29 July 2003).
+ </li>
+<li class="listitem">
+ Bayesian Computation with R, Jim Albert, ISBN-13: 978-0387922973, Springer;
+ 2nd ed. edition (10 Jun 2009)
+ </li>
+</ol></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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="hypergeometric_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="inverse_gamma_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/inverse_gamma_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/inverse_gamma_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,357 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Inverse Gamma Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution">
+<link rel="next" href="inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="inverse_chi_squared_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="inverse_gaussian_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_inverse_gamma_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.inverse_gamma_dist"></a><a class="link" href="inverse_gamma_dist.html" title="Inverse Gamma Distribution">Inverse
+ Gamma Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">inverse_gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">inverse_gamma_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="identifier">inverse_gamma_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">shape</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="keyword">const</span><span class="special">;</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="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The inverse_gamma distribution is a continuous probability distribution
+ of the reciprocal of a variable distributed according to the gamma distribution.
+ </p>
+<p>
+ The inverse_gamma distribution is used in Bayesian statistics.
+ </p>
+<p>
+ See <a href="http://en.wikipedia.org/wiki/Inverse-gamma_distribution" target="_top">inverse
+ gamma distribution</a>.
+ </p>
+<p>
+ <a href="http://rss.acs.unt.edu/Rdoc/library/pscl/html/igamma.html" target="_top">R
+ inverse gamma distribution functions</a>.
+ </p>
+<p>
+ <a href="http://reference.wolfram.com/mathematica/ref/InverseGammaDistribution.html" target="_top">Wolfram
+ inverse gamma distribution</a>.
+ </p>
+<p>
+ See also <a class="link" href="gamma_dist.html" title="Gamma (and Erlang) Distribution">Gamma Distribution</a>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ In spite of potential confusion with the inverse gamma function, this
+ distribution <span class="bold"><strong>does</strong></span> provide the typedef:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">inverse_gamma_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">gamma</span><span class="special">;</span></pre>
+<p>
+ If you want a <code class="computeroutput"><span class="keyword">double</span></code> precision
+ gamma distribution you can use
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">inverse_gamma_distribution</span><span class="special"><></span></pre>
+<p>
+ or you can write <code class="computeroutput"><span class="identifier">inverse_gamma</span>
+ <span class="identifier">my_ig</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">);</span></code>
+ </p>
+</td></tr>
+</table></div>
+<p>
+ For shape parameter α and scale parameter β, it is defined by the probability
+ density function (PDF):
+ </p>
+<p>
+    f(x;α, β) = β<sup>α</sup> * (1/x) <sup>α+1</sup> exp(-β/x) / Γ(α)
+ </p>
+<p>
+ and cumulative density function (CDF)
+ </p>
+<p>
+    F(x;α, β) = Γ(α, β/x) / Γ(α)
+ </p>
+<p>
+ The following graphs illustrate how the PDF and CDF of the inverse gamma
+ distribution varies as the parameters vary:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/inverse_gamma_pdf.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/inverse_gamma_cdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_gamma_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_gamma_dist.member_functions"></a></span><a class="link" href="inverse_gamma_dist.html#math_toolkit.dist_ref.dists.inverse_gamma_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">inverse_gamma_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">shape</span> <span class="special">=</span> <span class="number">1</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>
+</pre>
+<p>
+ Constructs an inverse gamma distribution with shape α and scale β.
+ </p>
+<p>
+ Requires that the shape and scale parameters are greater than zero, otherwise
+ calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </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 parameter of this inverse gamma 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 parameter of this inverse gamma distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_gamma_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_gamma_dist.non_member_accessors"></a></span><a class="link" href="inverse_gamma_dist.html#math_toolkit.dist_ref.dists.inverse_gamma_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variate is [0,+∞].
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Unlike some definitions, this implementation supports a random variate
+ equal to zero as a special case, returning zero for pdf and cdf.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_gamma_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_gamma_dist.accuracy"></a></span><a class="link" href="inverse_gamma_dist.html#math_toolkit.dist_ref.dists.inverse_gamma_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The inverse gamma distribution is implemented in terms of the incomplete
+ gamma functions <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>
+ and <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a> and their
+ inverses <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>
+ and <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>:
+ refer to the accuracy data for those functions for more information. But
+ in general, inverse_gamma results are accurate to a few epsilon, >14
+ decimal digits accuracy for 64-bit double.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_gamma_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_gamma_dist.implementation"></a></span><a class="link" href="inverse_gamma_dist.html#math_toolkit.dist_ref.dists.inverse_gamma_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table α is the shape parameter of the distribution, α   is its
+ scale parameter, <span class="emphasis"><em>x</em></span> is the random variate, <span class="emphasis"><em>p</em></span>
+ is the probability and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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 the relation: pdf = <a class="link" href="../../sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function">gamma_p_derivative</a>(α,
+ β/ x, β) / x * x
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>(α,
+ β / x)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>(α,
+ β / x)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = β  / <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>(α,
+ p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = α  / <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>(α,
+ q)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ β / (α + 1)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ median
+ </p>
+ </td>
+<td>
+ <p>
+ no analytic equation is known, but is evaluated as quantile(0.5)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ β / (α - 1) for α > 1, else a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ (β * β) / ((α - 1) * (α - 1) * (α - 2)) for α >2, else a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 4 * sqrt (α -2) / (α -3) for α >3, else a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis_excess
+ </p>
+ </td>
+<td>
+ <p>
+ (30 * α - 66) / ((α-3)*(α - 4)) for α >4, else a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="inverse_chi_squared_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="inverse_gaussian_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/inverse_gaussian_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/inverse_gaussian_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,435 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Inverse Gaussian (or Inverse Normal) Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="inverse_gamma_dist.html" title="Inverse Gamma Distribution">
+<link rel="next" href="laplace_dist.html" title="Laplace Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="inverse_gamma_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="laplace_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_inverse_gaussian_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist"></a><a class="link" href="inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution">Inverse
+ Gaussian (or Inverse Normal) Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">inverse_gaussian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">inverse_gaussian_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="identifier">inverse_gaussian_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="number">1</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">mean</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <span class="comment">// mean default 1.</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">// Optional scale, default 1 (unscaled).</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">// Shape = scale/mean.</span>
+<span class="special">};</span>
+<span class="keyword">typedef</span> <span class="identifier">inverse_gaussian_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">inverse_gaussian</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost // namespace math</span>
+</pre>
+<p>
+ The Inverse Gaussian distribution distribution is a continuous probability
+ distribution.
+ </p>
+<p>
+ The distribution is also called 'normal-inverse Gaussian distribution',
+ and 'normal Inverse' distribution.
+ </p>
+<p>
+ It is also convenient to provide unity as default for both mean and scale.
+ This is the Standard form for all distributions. The Inverse Gaussian distribution
+ was first studied in relation to Brownian motion. In 1956 M.C.K. Tweedie
+ used the name Inverse Gaussian because there is an inverse relationship
+ between the time to cover a unit distance and distance covered in unit
+ time. The inverse Gaussian is one of family of distributions that have
+ been called the <a href="http://en.wikipedia.org/wiki/Tweedie_distributions" target="_top">Tweedie
+ distributions</a>.
+ </p>
+<p>
+ (So <span class="emphasis"><em>inverse</em></span> in the name may mislead: it does <span class="bold"><strong>not</strong></span> relate to the inverse of a distribution).
+ </p>
+<p>
+ The tails of the distribution decrease more slowly than the normal distribution.
+ It is therefore suitable to model phenomena where numerically large values
+ are more probable than is the case for the normal distribution. For stock
+ market returns and prices, a key characteristic is that it models that
+ extremely large variations from typical (crashes) can occur even when almost
+ all (normal) variations are small.
+ </p>
+<p>
+ Examples are returns from financial assets and turbulent wind speeds.
+ </p>
+<p>
+ The normal-inverse Gaussian distributions form a subclass of the generalised
+ hyperbolic distributions.
+ </p>
+<p>
+ See distribution.
+ <a href="http://mathworld.wolfram.com/InverseGaussianDistribution.html" target="_top">Weisstein,
+ Eric W. "Inverse Gaussian Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+<p>
+ If you want a <code class="computeroutput"><span class="keyword">double</span></code> precision
+ inverse_gaussian distribution you can use
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">inverse_gaussian_distribution</span><span class="special"><></span></pre>
+<p>
+ or, more conveniently, you can write
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">inverse_gaussian</span><span class="special">;</span>
+<span class="identifier">inverse_gaussian</span> <span class="identifier">my_ig</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">);</span>
+</pre>
+<p>
+ For mean parameters μ and scale (also called precision) parameter λ, and random
+ variate x, the inverse_gaussian distribution is defined by the probability
+ density function (PDF):
+ </p>
+<p>
+    f(x;μ, λ) = √(λ/2πx<sup>3</sup>) e<sup>-λ(x-μ)²/2μ²x</sup>
+ </p>
+<p>
+ and Cumulative Density Function (CDF):
+ </p>
+<p>
+    F(x;μ, λ) = Φ{√(λ<span class="emphasis"><em>x) (x</em></span>μ-1)} + e<sup>2μ/λ</sup> Φ{-√(λ/μ) (1+x/μ)}
+ </p>
+<p>
+ where Φ is the standard normal distribution CDF.
+ </p>
+<p>
+ The following graphs illustrate how the PDF and CDF of the inverse_gaussian
+ distribution varies for a few values of parameters μ and λ:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/inverse_gaussian_pdf.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/inverse_gaussian_cdf.png" align="middle"></span>
+ </p>
+<p>
+ Tweedie also provided 3 other parameterisations where (μ and λ) are replaced
+ by their ratio φ = λ/μ and by 1/μ: these forms may be more suitable for Bayesian
+ applications. These can be found on Seshadri, page 2 and are also discussed
+ by Chhikara and Folks on page 105. Another related parameterisation, the
+ __wald_distrib (where mean μ is unity) is also provided.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.member_functions"></a></span><a class="link" href="inverse_gaussian_dist.html#math_toolkit.dist_ref.dists.inverse_gaussian_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">inverse_gaussian_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">df</span> <span class="special">=</span> <span class="number">1</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="comment">// optionally scaled.</span>
+</pre>
+<p>
+ Constructs an inverse_gaussian distribution with μ mean, and scale λ, with
+ both default values 1.
+ </p>
+<p>
+ Requires that both the mean μ parameter and scale λ are greater than zero,
+ otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the mean μ parameter 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 λ parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.non_member_accessors"></a></span><a class="link" href="inverse_gaussian_dist.html#math_toolkit.dist_ref.dists.inverse_gaussian_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variate is [0,+∞).
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Unlike some definitions, this implementation supports a random variate
+ equal to zero as a special case, returning zero for both pdf and cdf.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.accuracy"></a></span><a class="link" href="inverse_gaussian_dist.html#math_toolkit.dist_ref.dists.inverse_gaussian_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The inverse_gaussian distribution is implemented in terms of the exponential
+ function and standard normal distribution <span class="emphasis"><em>N</em></span>0,1 Φ : refer
+ to the accuracy data for those functions for more information. But in general,
+ gamma (and thus inverse gamma) results are often accurate to a few epsilon,
+ >14 decimal digits accuracy for 64-bit double.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.implementation"></a></span><a class="link" href="inverse_gaussian_dist.html#math_toolkit.dist_ref.dists.inverse_gaussian_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table μ is the mean parameter and λ is the scale parameter
+ of the inverse_gaussian distribution, <span class="emphasis"><em>x</em></span> is the random
+ variate, <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q = 1-p</em></span>
+ its complement. Parameters μ for shape and λ for scale are used for the inverse
+ gaussian function.
+ </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>
+ √(λ/ 2πx<sup>3</sup>) e<sup>-λ(x - μ)²/ 2μ²x</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Φ{√(λ<span class="emphasis"><em>x) (x</em></span>μ-1)} + e<sup>2μ/λ</sup> Φ{-√(λ/μ) (1+x/μ)}
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ using complement of Φ above.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ No closed form known. Estimated using a guess refined by Newton-Raphson
+ iteration.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ No closed form known. Estimated using a guess refined by Newton-Raphson
+ iteration.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ μ {√(1+9μ²/4λ²)² - 3μ/2λ}
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ median
+ </p>
+ </td>
+<td>
+ <p>
+ No closed form analytic equation is known, but is evaluated as
+ quantile(0.5)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ μ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ μ³/λ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 3 √ (μ/λ)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis_excess
+ </p>
+ </td>
+<td>
+ <p>
+ 15μ/λ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 12μ/λ
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.inverse_gaussian_dist.references"></a></span><a class="link" href="inverse_gaussian_dist.html#math_toolkit.dist_ref.dists.inverse_gaussian_dist.references">References</a>
+ </h5>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Wald, A. (1947). Sequential analysis. Wiley, NY.
+ </li>
+<li class="listitem">
+ The Inverse Gaussian distribution : theory, methodology, and applications,
+ Raj S. Chhikara, J. Leroy Folks. ISBN 0824779975 (1989).
+ </li>
+<li class="listitem">
+ The Inverse Gaussian distribution : statistical theory and applications,
+ Seshadri, V , ISBN - 0387986189 (pbk) (Dewey 519.2) (1998).
+ </li>
+<li class="listitem">
+ <a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.wald.html" target="_top">Numpy
+ and Scipy Documentation</a>.
+ </li>
+<li class="listitem">
+ <a href="http://bm2.genes.nig.ac.jp/RGM2/R_current/library/statmod/man/invgauss.html" target="_top">R
+ statmod invgauss functions</a>.
+ </li>
+<li class="listitem">
+ <a href="http://cran.r-project.org/web/packages/SuppDists/index.html" target="_top">R
+ SuppDists invGauss functions</a>. (Note that these R implementations
+ names differ in case).
+ </li>
+<li class="listitem">
+ <a href="http://www.statsci.org/s/invgauss.html" target="_top">StatSci.org invgauss
+ help</a>.
+ </li>
+<li class="listitem">
+ <a href="http://www.statsci.org/s/invgauss.statSci.org" target="_top">invgauss
+ R source</a>.
+ </li>
+<li class="listitem">
+ <a href="http://www.biostat.wustl.edu/archives/html/s-news/2001-12/msg00144.html" target="_top">pwald,
+ qwald</a>.
+ </li>
+<li class="listitem">
+ <a href="http://www.brighton-webs.co.uk/distributions/wald.asp" target="_top">Brighton
+ Webs wald</a>.
+ </li>
+</ol></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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="inverse_gamma_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="laplace_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/laplace_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/laplace_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,350 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Laplace Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="inverse_gaussian_dist.html" title="Inverse Gaussian (or Inverse Normal) Distribution">
+<link rel="next" href="logistic_dist.html" title="Logistic Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="inverse_gaussian_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="logistic_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_laplace_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.laplace_dist"></a><a class="link" href="laplace_dist.html" title="Laplace Distribution">Laplace Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">laplace</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">laplace_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">laplace_distribution</span><span class="special"><></span> <span class="identifier">laplace</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">laplace_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">// Construct:</span>
+ <span class="identifier">laplace_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="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="identifier">RealType</span> <span class="identifier">scale</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Laplace distribution is the distribution of differences between two independent
+ variates with identical exponential distributions (Abramowitz and Stegun
+ 1972, p. 930). It is also called the double exponential distribution.
+ </p>
+<p>
+ For location parameter μ   and scale parameter σ   it is defined by the probability
+ density function:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/laplace_pdf.png"></span>
+ </p>
+<p>
+ The location and scale parameters are equivalent to the mean and standard
+ deviation of the normal or Gaussian distribution.
+ </p>
+<p>
+ The following graph illustrates the effect of the parameters μ   and σ   on the
+ PDF. Note that the range of the random variable remains [-∞,+∞] irrespective
+ of the value of the location parameter:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/laplace_pdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.laplace_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.laplace_dist.member_functions"></a></span><a class="link" href="laplace_dist.html#math_toolkit.dist_ref.dists.laplace_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">laplace_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>
+</pre>
+<p>
+ Constructs a laplace distribution with location <span class="emphasis"><em>location</em></span>
+ and scale <span class="emphasis"><em>scale</em></span>.
+ </p>
+<p>
+ The location parameter is the same as the mean of the random variate.
+ </p>
+<p>
+ The scale parameter is proportional to the standard deviation of the random
+ variate.
+ </p>
+<p>
+ Requires that the scale parameter is greater than zero, otherwise calls
+ <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </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 <span class="emphasis"><em>location</em></span> parameter 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 <span class="emphasis"><em>scale</em></span> parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.laplace_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.laplace_dist.non_member_accessors"></a></span><a class="link" href="laplace_dist.html#math_toolkit.dist_ref.dists.laplace_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [-∞,+∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.laplace_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.laplace_dist.accuracy"></a></span><a class="link" href="laplace_dist.html#math_toolkit.dist_ref.dists.laplace_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The laplace distribution is implemented in terms of the standard library
+ log and exp functions and as such should have very small errors.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.laplace_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.laplace_dist.implementation"></a></span><a class="link" href="laplace_dist.html#math_toolkit.dist_ref.dists.laplace_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table μ is the location parameter of the distribution, σ is
+ its scale parameter, <span class="emphasis"><em>x</em></span> is the random variate, <span class="emphasis"><em>p</em></span>
+ is the probability and its complement <span class="emphasis"><em>q = 1-p</em></span>.
+ </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 the relation: pdf = e<sup>-abs(x-μ) / σ</sup> / (2 * σ)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relations:
+ </p>
+ <p>
+ x < μ : p = e<sup>(x-μ)/σ </sup> / σ
+ </p>
+ <p>
+ x >= μ : p = 1 - e<sup>(μ-x)/σ </sup> / σ
+
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ -x < μ : q = e<sup>(-x-μ)/σ </sup> / σ
+ </p>
+ <p>
+ -x >= μ : q = 1 - e<sup>(μ+x)/σ </sup> / σ
+
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relations:
+ </p>
+ <p>
+ p < 0.5 : x = μ + σ * log(2*p)
+ </p>
+ <p>
+ p >= 0.5 : x = μ - σ * log(2-2*p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ q > 0.5: x = μ + σ*log(2-2*q)
+ </p>
+ <p>
+ q <=0.5: x = μ - σ*log( 2*q )
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ μ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ 2 * σ<sup>2</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ μ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 6
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ 3
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.laplace_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.laplace_dist.references"></a></span><a class="link" href="laplace_dist.html#math_toolkit.dist_ref.dists.laplace_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/LaplaceDistribution.html" target="_top">Weisstein,
+ Eric W. "Laplace Distribution."</a> From MathWorld--A
+ Wolfram Web Resource.
+ </li>
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/Laplace_distribution" target="_top">Laplace
+ Distribution</a>
+ </li>
+<li class="listitem">
+ M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions,
+ 1972, p. 930.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="inverse_gaussian_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="logistic_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/logistic_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/logistic_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,288 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Logistic Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="laplace_dist.html" title="Laplace Distribution">
+<link rel="next" href="lognormal_dist.html" title="Log Normal Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="laplace_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="lognormal_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_logistic_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.logistic_dist"></a><a class="link" href="logistic_dist.html" title="Logistic Distribution">Logistic
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">logistic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">logistic_distribution</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">logistic_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">// Construct:</span>
+ <span class="identifier">logistic_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="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">// location.</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">// scale.</span>
+
+<span class="special">};</span>
+
+<span class="keyword">typedef</span> <span class="identifier">logistic_distribution</span><span class="special"><></span> <span class="identifier">logistic</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The logistic distribution is a continous probability distribution. It has
+ two parameters - location and scale. The cumulative distribution function
+ of the logistic distribution appears in logistic regression and feedforward
+ neural networks. Among other applications, United State Chess Federation
+ and FIDE use it to calculate chess ratings.
+ </p>
+<p>
+ The following graph shows how the distribution changes as the parameters
+ change:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/logistic_pdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.logistic_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.logistic_dist.member_functions"></a></span><a class="link" href="logistic_dist.html#math_toolkit.dist_ref.dists.logistic_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">logistic_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">u</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">s</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a logistic distribution with location <span class="emphasis"><em>u</em></span>
+ and scale <span class="emphasis"><em>s</em></span>.
+ </p>
+<p>
+ Requires <code class="computeroutput"><span class="identifier">scale</span> <span class="special">></span>
+ <span class="number">0</span></code>, otherwise a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is raised.
+ </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 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 of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.logistic_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.logistic_dist.non_member_accessors"></a></span><a class="link" href="logistic_dist.html#math_toolkit.dist_ref.dists.logistic_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [-[max_value], +[min_value]]. However,
+ the pdf and cdf support inputs of +∞ and -∞
+as special cases if RealType permits.
+ </p>
+<p>
+ At <code class="computeroutput"><span class="identifier">p</span><span class="special">=</span><span class="number">1</span></code> and <code class="computeroutput"><span class="identifier">p</span><span class="special">=</span><span class="number">0</span></code>, the quantile
+ function returns the result of +<a class="link" href="../../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ and -<a class="link" href="../../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>,
+ while the complement quantile function returns the result of -<a class="link" href="../../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ and +<a class="link" href="../../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ respectively.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.logistic_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.logistic_dist.accuracy"></a></span><a class="link" href="logistic_dist.html#math_toolkit.dist_ref.dists.logistic_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The logistic distribution is implemented in terms of the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span></code> and the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">log</span></code>
+ functions, so its accuracy is related to the accurate implementations of
+ those functions on a given platform. When calculating the quantile with
+ a non-zero <span class="emphasis"><em>position</em></span> parameter catastrophic cancellation
+ errors can occur: in such cases, only a low <span class="emphasis"><em>absolute error</em></span>
+ can be guarenteed.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.logistic_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.logistic_dist.implementation"></a></span><a class="link" href="logistic_dist.html#math_toolkit.dist_ref.dists.logistic_dist.implementation">Implementation</a>
+ </h5>
+<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 the relation: pdf = e<sup>-(x-u)/s</sup> / (s*(1+e<sup>-(x-u)/s</sup>)<sup>2</sup>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = 1/(1+e<sup>-(x-u)/s</sup>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = 1/(1+e<sup>(x-u)/s</sup>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = u - s*log(1/p-1)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = u + s*log(p/1-p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ u
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ The same as the mean.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ 6/5
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ (π*s)<sup>2</sup> / 3
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="laplace_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="lognormal_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/lognormal_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/lognormal_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,320 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Log Normal Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="logistic_dist.html" title="Logistic Distribution">
+<link rel="next" href="negative_binomial_dist.html" title="Negative Binomial Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="logistic_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="negative_binomial_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_lognormal_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.lognormal_dist"></a><a class="link" href="lognormal_dist.html" title="Log Normal Distribution">Log Normal
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">lognormal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">lognormal_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">lognormal_distribution</span><span class="special"><></span> <span class="identifier">lognormal</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">lognormal_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">// Construct:</span>
+ <span class="identifier">lognormal_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="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="identifier">RealType</span> <span class="identifier">scale</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The lognormal distribution is the distribution that arises when the logarithm
+ of the random variable is normally distributed. A lognormal distribution
+ results when the variable is the product of a large number of independent,
+ identically-distributed variables.
+ </p>
+<p>
+ For location and scale parameters <span class="emphasis"><em>m</em></span> and <span class="emphasis"><em>s</em></span>
+ it is defined by the probability density function:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/lognormal_ref.png"></span>
+ </p>
+<p>
+ The location and scale parameters are equivalent to the mean and standard
+ deviation of the logarithm of the random variable.
+ </p>
+<p>
+ The following graph illustrates the effect of the location parameter on
+ the PDF, note that the range of the random variable remains [0,+∞] irrespective
+ of the value of the location parameter:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/lognormal_pdf1.png" align="middle"></span>
+ </p>
+<p>
+ The next graph illustrates the effect of the scale parameter on the PDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/lognormal_pdf2.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.lognormal_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.lognormal_dist.member_functions"></a></span><a class="link" href="lognormal_dist.html#math_toolkit.dist_ref.dists.lognormal_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">lognormal_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>
+</pre>
+<p>
+ Constructs a lognormal distribution with location <span class="emphasis"><em>location</em></span>
+ and scale <span class="emphasis"><em>scale</em></span>.
+ </p>
+<p>
+ The location parameter is the same as the mean of the logarithm of the
+ random variate.
+ </p>
+<p>
+ The scale parameter is the same as the standard deviation of the logarithm
+ of the random variate.
+ </p>
+<p>
+ Requires that the scale parameter is greater than zero, otherwise calls
+ <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </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 <span class="emphasis"><em>location</em></span> parameter 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 <span class="emphasis"><em>scale</em></span> parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.lognormal_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.lognormal_dist.non_member_accessors"></a></span><a class="link" href="lognormal_dist.html#math_toolkit.dist_ref.dists.lognormal_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [0,+∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.lognormal_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.lognormal_dist.accuracy"></a></span><a class="link" href="lognormal_dist.html#math_toolkit.dist_ref.dists.lognormal_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The lognormal distribution is implemented in terms of the standard library
+ log and exp functions, plus the <a class="link" href="../../sf_erf/error_function.html" title="Error Functions">error
+ function</a>, and as such should have very low error rates.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.lognormal_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.lognormal_dist.implementation"></a></span><a class="link" href="lognormal_dist.html#math_toolkit.dist_ref.dists.lognormal_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>m</em></span> is the location parameter
+ of the distribution, <span class="emphasis"><em>s</em></span> is its scale parameter, <span class="emphasis"><em>x</em></span>
+ is the random variate, <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q
+ = 1-p</em></span>.
+ </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 the relation: pdf = e<sup>-(ln(x) - m)<sup>2 </sup> / 2s<sup>2 </sup> </sup> / (x * s * sqrt(2pi))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = cdf(normal_distribtion<RealType>(m,
+ s), log(x))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = cdf(complement(normal_distribtion<RealType>(m,
+ s), log(x)))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = exp(quantile(normal_distribtion<RealType>(m,
+ s), p))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = exp(quantile(complement(normal_distribtion<RealType>(m,
+ s), q)))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ e<sup>m + s<sup>2 </sup> / 2 </sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ (e<sup>s<sup>2</sup> </sup> - 1) * e<sup>2m + s<sup>2 </sup> </sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ e<sup>m + s<sup>2 </sup> </sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ sqrt(e<sup>s<sup>2</sup> </sup> - 1) * (2 + e<sup>s<sup>2</sup> </sup>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ e<sup>4s<sup>2</sup> </sup> + 2e<sup>3s<sup>2</sup> </sup> + 3e<sup>2s<sup>2</sup> </sup> - 3
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ e<sup>4s<sup>2</sup> </sup> + 2e<sup>3s<sup>2</sup> </sup> + 3e<sup>2s<sup>2</sup> </sup> - 6
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="logistic_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="negative_binomial_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_beta_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_beta_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,403 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Noncentral Beta Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="negative_binomial_dist.html" title="Negative Binomial Distribution">
+<link rel="next" href="nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="negative_binomial_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nc_chi_squared_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_nc_beta_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.nc_beta_dist"></a><a class="link" href="nc_beta_dist.html" title="Noncentral Beta Distribution">Noncentral
+ Beta Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">non_central_beta</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">non_central_beta_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">non_central_beta_distribution</span><span class="special"><></span> <span class="identifier">non_central_beta</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">non_central_beta_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">non_central_beta_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">);</span>
+
+ <span class="comment">// Accessor to shape parameters:</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Accessor to non-centrality parameter lambda:</span>
+ <span class="identifier">RealType</span> <span class="identifier">non_centrality</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The noncentral beta distribution is a generalization of the <a class="link" href="beta_dist.html" title="Beta Distribution">Beta
+ Distribution</a>.
+ </p>
+<p>
+ It is defined as the ratio X = χ<sub>m</sub><sup>2</sup>(λ) / (χ<sub>m</sub><sup>2</sup>(λ) + χ<sub>n</sub><sup>2</sup>) where χ<sub>m</sub><sup>2</sup>(λ) is a noncentral
+ χ<sup>2</sup>
+random variable with <span class="emphasis"><em>m</em></span> degrees of freedom, and χ<sub>n</sub><sup>2</sup>
+is
+ a central χ<sup>2</sup> random variable with <span class="emphasis"><em>n</em></span> degrees of freedom.
+ </p>
+<p>
+ This gives a PDF that can be expressed as a Poisson mixture of beta distribution
+ PDFs:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_beta_ref1.png"></span>
+ </p>
+<p>
+ where P(i;λ/2) is the discrete Poisson probablity at <span class="emphasis"><em>i</em></span>,
+ with mean λ/2, and I<sub>x</sub><sup>'</sup>(α, β) is the derivative of the incomplete beta function.
+ This leads to the usual form of the CDF as:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_beta_ref2.png"></span>
+ </p>
+<p>
+ The following graph illustrates how the distribution changes for different
+ values of λ:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/nc_beta_pdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_beta_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_beta_dist.member_functions"></a></span><a class="link" href="nc_beta_dist.html#math_toolkit.dist_ref.dists.nc_beta_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">non_central_beta_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a noncentral beta distribution with shape parameters <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span> and non-centrality parameter <span class="emphasis"><em>lambda</em></span>.
+ </p>
+<p>
+ Requires a > 0, b > 0 and lambda >= 0, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>a</em></span> from which this object was
+ constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>b</em></span> from which this object was
+ constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">non_centrality</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>lambda</em></span> from which this object
+ was constructed.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_beta_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_beta_dist.non_member_accessors"></a></span><a class="link" href="nc_beta_dist.html#math_toolkit.dist_ref.dists.nc_beta_dist.non_member_accessors">Non-member
+ Accessors</a>
+ </h5>
+<p>
+ Most of the <a class="link" href="../nmp.html" title="Non-Member Properties">usual non-member
+ accessor functions</a> are supported: <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative
+ Distribution Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability
+ Density Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ Mean and variance are implemented using hypergeometric pfq functions and
+ relations given in <a href="http://reference.wolfram.com/mathematica/ref/NoncentralBetaDistribution.html" target="_top">Wolfram
+ Noncentral Beta Distribution</a>.
+ </p>
+<p>
+ However, the following are not currently implemented: <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a> and
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>.
+ </p>
+<p>
+ The domain of the random variable is [0, 1].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_beta_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_beta_dist.accuracy"></a></span><a class="link" href="nc_beta_dist.html#math_toolkit.dist_ref.dists.nc_beta_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon)
+ found on various platforms with various floating point types. No comparison
+ to the R-2.5.1 Math library,
+ or to the FORTRAN implementations of AS226 or AS310 are given since these
+ appear to only guarantee absolute error: this would causes our test harness
+ to assign an <span class="emphasis"><em>"infinite"</em></span> error to these libraries
+ for some of our test values when measuring <span class="emphasis"><em>relative error</em></span>.
+ Unless otherwise specified any floating-point type that is narrower than
+ the one shown will have <a class="link" href="../../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.dist_ref.dists.nc_beta_dist.errors_in_cdf_of_the_noncentral_"></a><p class="title"><b>Table 2.4. Errors In CDF of the Noncentral Beta</b></p>
+<div class="table-contents"><table class="table" summary="Errors In CDF of the Noncentral Beta">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ α, β,λ < 200
+ </p>
+ </th>
+<th>
+ <p>
+ α,β,λ > 200
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=620 Mean=22
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=8670 Mean=1040
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA32, gcc-4.1.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=825 Mean=50
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.5x10<sup>4</sup> Mean=4000
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=825 Mean=30
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.7x10<sup>4</sup> Mean=2500
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=420 Mean=50
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=9200 Mean=1200
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ Error rates for the PDF, the complement of the CDF and for the quantile
+ functions are broadly similar.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_beta_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_beta_dist.tests"></a></span><a class="link" href="nc_beta_dist.html#math_toolkit.dist_ref.dists.nc_beta_dist.tests">Tests</a>
+ </h5>
+<p>
+ There are two sets of test data used to verify this implementation: firstly
+ we can compare with a few sample values generated by the <a href="http://www.r-project.org/" target="_top">R
+ library</a>. Secondly, we have tables of test data, computed with this
+ implementation and using interval arithmetic - this data should be accurate
+ to at least 50 decimal digits - and is the used for our accuracy tests.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_beta_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_beta_dist.implementation"></a></span><a class="link" href="nc_beta_dist.html#math_toolkit.dist_ref.dists.nc_beta_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ The CDF and its complement are evaluated as follows:
+ </p>
+<p>
+ First we determine which of the two values (the CDF or its complement)
+ is likely to be the smaller, the crossover point is taken to be the mean
+ of the distribution: for this we use the approximation due to: R. Chattamvelli
+ and R. Shanmugam, "Algorithm AS 310: Computing the Non-Central Beta
+ Distribution Function", Applied Statistics, Vol. 46, No. 1. (1997),
+ pp. 146-156.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_beta_ref3.png"></span>
+ </p>
+<p>
+ Then either the CDF or its complement is computed using the relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_beta_ref4.png"></span>
+ </p>
+<p>
+ The summation is performed by starting at i = λ/2, and then recursing in
+ both directions, using the usual recurrence relations for the Poisson PDF
+ and incomplete beta functions. This is the "Method 2" described
+ by:
+ </p>
+<p>
+ Denise Benton and K. Krishnamoorthy, "Computing discrete mixtures
+ of continuous distributions: noncentral chisquare, noncentral t and the
+ distribution of the square of the sample multiple correlation coefficient",
+ Computational Statistics & Data Analysis 43 (2003) 249-267.
+ </p>
+<p>
+ Specific applications of the above formulae to the noncentral beta distribution
+ can be found in:
+ </p>
+<p>
+ Russell V. Lenth, "Algorithm AS 226: Computing Noncentral Beta Probabilities",
+ Applied Statistics, Vol. 36, No. 2. (1987), pp. 241-244.
+ </p>
+<p>
+ H. Frick, "Algorithm AS R84: A Remark on Algorithm AS 226: Computing
+ Non-Central Beta Probabilities", Applied Statistics, Vol. 39, No.
+ 2. (1990), pp. 311-312.
+ </p>
+<p>
+ Ming Long Lam, "Remark AS R95: A Remark on Algorithm AS 226: Computing
+ Non-Central Beta Probabilities", Applied Statistics, Vol. 44, No.
+ 4. (1995), pp. 551-552.
+ </p>
+<p>
+ Harry O. Posten, "An Effective Algorithm for the Noncentral Beta Distribution
+ Function", The American Statistician, Vol. 47, No. 2. (May, 1993),
+ pp. 129-131.
+ </p>
+<p>
+ R. Chattamvelli, "A Note on the Noncentral Beta Distribution Function",
+ The American Statistician, Vol. 49, No. 2. (May, 1995), pp. 231-234.
+ </p>
+<p>
+ Of these, the Posten reference provides the most complete overview, and
+ includes the modification starting iteration at λ/2.
+ </p>
+<p>
+ The main difference between this implementation and the above references
+ is the direct computation of the complement when most efficient to do so,
+ and the accumulation of the sum to -1 rather than subtracting the result
+ from 1 at the end: this can substantially reduce the number of iterations
+ required when the result is near 1.
+ </p>
+<p>
+ The PDF is computed using the methodology of Benton and Krishnamoorthy
+ and the relation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_beta_ref1.png"></span>
+ </p>
+<p>
+ Quantiles are computed using a specially modified version of <a class="link" href="../../internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748">bracket_and_solve_root</a>,
+ starting the search for the root at the mean of the distribution. (A Cornish-Fisher
+ type expansion was also tried, but while this gets quite close to the root
+ in many cases, when it is wrong it tends to introduce quite pathological
+ behaviour: more investigation in this area is probably warranted).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="negative_binomial_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nc_chi_squared_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_chi_squared_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_chi_squared_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,494 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Noncentral Chi-Squared Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="nc_beta_dist.html" title="Noncentral Beta Distribution">
+<link rel="next" href="nc_f_dist.html" title="Noncentral F Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="nc_beta_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nc_f_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_nc_chi_squared_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist"></a><a class="link" href="nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">Noncentral
+ Chi-Squared Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">non_central_chi_squared</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">non_central_chi_squared_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">non_central_chi_squared_distribution</span><span class="special"><></span> <span class="identifier">non_central_chi_squared</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">non_central_chi_squared_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">non_central_chi_squared_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">);</span>
+
+ <span class="comment">// Accessor to degrees of freedom parameter v:</span>
+ <span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Accessor to non centrality parameter lambda:</span>
+ <span class="identifier">RealType</span> <span class="identifier">non_centrality</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Parameter finders:</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_degrees_of_freedom</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">B</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">C</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_degrees_of_freedom</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">complemented3_type</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span><span class="identifier">B</span><span class="special">,</span><span class="identifier">C</span><span class="special">>&</span> <span class="identifier">c</span><span class="special">);</span>
+
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_non_centrality</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">B</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">C</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_non_centrality</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">complemented3_type</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span><span class="identifier">B</span><span class="special">,</span><span class="identifier">C</span><span class="special">>&</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The noncentral chi-squared distribution is a generalization of the <a class="link" href="chi_squared_dist.html" title="Chi Squared Distribution">Chi Squared Distribution</a>.
+ If X<sub>i</sub> are ν independent, normally distributed random variables with means
+ μ<sub>i</sub> and variances σ<sub>i</sub><sup>2</sup>, then the random variable
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_chi_squ_ref1.png"></span>
+ </p>
+<p>
+ is distributed according to the noncentral chi-squared distribution.
+ </p>
+<p>
+ The noncentral chi-squared distribution has two parameters: ν which specifies
+ the number of degrees of freedom (i.e. the number of X<sub>i</sub>), and λ which is
+ related to the mean of the random variables X<sub>i</sub> by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_chi_squ_ref2.png"></span>
+ </p>
+<p>
+ (Note that some references define λ as one half of the above sum).
+ </p>
+<p>
+ This leads to a PDF of:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_chi_squ_ref3.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>f(x;k)</em></span> is the central chi-squared distribution
+ PDF, and <span class="emphasis"><em>I<sub>v</sub>(x)</em></span> is a modified Bessel function of the
+ first kind.
+ </p>
+<p>
+ The following graph illustrates how the distribution changes for different
+ values of λ:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/nccs_pdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.member_functions"></a></span><a class="link" href="nc_chi_squared_dist.html#math_toolkit.dist_ref.dists.nc_chi_squared_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">non_central_chi_squared_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a Chi-Squared distribution with <span class="emphasis"><em>v</em></span> degrees
+ of freedom and non-centrality parameter <span class="emphasis"><em>lambda</em></span>.
+ </p>
+<p>
+ Requires v > 0 and lambda >= 0, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>v</em></span> from which this object was
+ constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">non_centrality</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>lambda</em></span> from which this object
+ was constructed.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_degrees_of_freedom</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ This function returns the number of degrees of freedom <span class="emphasis"><em>v</em></span>
+ such that: <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">non_central_chi_squared</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <span class="identifier">Policy</span><span class="special">>(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">lambda</span><span class="special">),</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">p</span></code>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">B</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_degrees_of_freedom</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">complemented3_type</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span><span class="identifier">B</span><span class="special">,</span><span class="identifier">C</span><span class="special">>&</span> <span class="identifier">c</span><span class="special">);</span>
+</pre>
+<p>
+ When called with argument <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">lambda</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span>
+ <span class="identifier">q</span><span class="special">)</span></code>
+ this function returns the number of degrees of freedom <span class="emphasis"><em>v</em></span>
+ such that:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">non_central_chi_squared</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <span class="identifier">Policy</span><span class="special">>(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">lambda</span><span class="special">),</span> <span class="identifier">x</span><span class="special">))</span> <span class="special">==</span> <span class="identifier">q</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_non_centrality</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ This function returns the non centrality parameter <span class="emphasis"><em>lambda</em></span>
+ such that:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">non_central_chi_squared</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <span class="identifier">Policy</span><span class="special">>(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">lambda</span><span class="special">),</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">p</span></code>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">B</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_non_centrality</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">complemented3_type</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span><span class="identifier">B</span><span class="special">,</span><span class="identifier">C</span><span class="special">>&</span> <span class="identifier">c</span><span class="special">);</span>
+</pre>
+<p>
+ When called with argument <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span>
+ <span class="identifier">x</span><span class="special">,</span>
+ <span class="identifier">q</span><span class="special">)</span></code>
+ this function returns the non centrality parameter <span class="emphasis"><em>lambda</em></span>
+ such that:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">non_central_chi_squared</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <span class="identifier">Policy</span><span class="special">>(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">lambda</span><span class="special">),</span> <span class="identifier">x</span><span class="special">))</span> <span class="special">==</span> <span class="identifier">q</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.non_member_accessors"></a></span><a class="link" href="nc_chi_squared_dist.html#math_toolkit.dist_ref.dists.nc_chi_squared_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [0, +∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.examples"></a></span><a class="link" href="nc_chi_squared_dist.html#math_toolkit.dist_ref.dists.nc_chi_squared_dist.examples">Examples</a>
+ </h5>
+<p>
+ There is a <a class="link" href="../../stat_tut/weg/nccs_eg.html" title="Non Central Chi Squared Example">worked example</a>
+ for the noncentral chi-squared distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.accuracy"></a></span><a class="link" href="nc_chi_squared_dist.html#math_toolkit.dist_ref.dists.nc_chi_squared_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon)
+ found on various platforms with various floating-point types, along with
+ comparisons to the <a href="http://www.r-project.org/" target="_top">R-2.5.1 Math
+ library</a>. Unless otherwise specified, any floating-point type that
+ is narrower than the one shown will have <a class="link" href="../../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.errors_in_cdf_of_the_noncentral_"></a><p class="title"><b>Table 2.5. Errors In CDF of the Noncentral Chi-Squared</b></p>
+<div class="table-contents"><table class="table" summary="Errors In CDF of the Noncentral Chi-Squared">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ ν,λ < 200
+ </p>
+ </th>
+<th>
+ <p>
+ ν,λ > 200
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=50 Mean=9.9
+ </p>
+ <p>
+ R Peak=685 Mean=109
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=9780 Mean=718
+ </p>
+ <p>
+ R Peak=3x10<sup>8</sup> Mean=2x10<sup>7</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA32, gcc-4.1.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=270 Mean=27
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=7900 Mean=900
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=107 Mean=17
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5000 Mean=630
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=270 Mean=20
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4600 Mean=560
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ Error rates for the complement of the CDF and for the quantile functions
+ are broadly similar. Special mention should go to the <code class="computeroutput"><span class="identifier">mode</span></code>
+ function: there is no closed form for this function, so it is evaluated
+ numerically by finding the maxima of the PDF: in principal this can not
+ produce an accuracy greater than the square root of the machine epsilon.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.tests"></a></span><a class="link" href="nc_chi_squared_dist.html#math_toolkit.dist_ref.dists.nc_chi_squared_dist.tests">Tests</a>
+ </h5>
+<p>
+ There are two sets of test data used to verify this implementation: firstly
+ we can compare with published data, for example with Table 6 of "Self-Validating
+ Computations of Probabilities for Selected Central and Noncentral Univariate
+ Probability Functions", Morgan C. Wang and William J. Kennedy, Journal
+ of the American Statistical Association, Vol. 89, No. 427. (Sep., 1994),
+ pp. 878-887. Secondly, we have tables of test data, computed with this
+ implementation and using interval arithmetic - this data should be accurate
+ to at least 50 decimal digits - and is the used for our accuracy tests.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_chi_squared_dist.implementation"></a></span><a class="link" href="nc_chi_squared_dist.html#math_toolkit.dist_ref.dists.nc_chi_squared_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ The CDF and its complement are evaluated as follows:
+ </p>
+<p>
+ First we determine which of the two values (the CDF or its complement)
+ is likely to be the smaller: for this we can use the relation due to Temme
+ (see "Asymptotic and Numerical Aspects of the Noncentral Chi-Square
+ Distribution", N. M. Temme, Computers Math. Applic. Vol 25, No. 5,
+ 55-63, 1993) that:
+ </p>
+<p>
+ F(ν,λ;ν+λ) ≈ 0.5
+ </p>
+<p>
+ and so compute the CDF when the random variable is less than ν+λ, and its
+ complement when the random variable is greater than ν+λ. If necessary the
+ computed result is then subtracted from 1 to give the desired result (the
+ CDF or its complement).
+ </p>
+<p>
+ For small values of the non centrality parameter, the CDF is computed using
+ the method of Ding (see "Algorithm AS 275: Computing the Non-Central
+ #2 Distribution Function", Cherng G. Ding, Applied Statistics, Vol.
+ 41, No. 2. (1992), pp. 478-482). This uses the following series representation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_chi_squ_ref4.png"></span>
+ </p>
+<p>
+ which requires just one call to <a class="link" href="../../sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function">gamma_p_derivative</a>
+ with the subsequent terms being computed by recursion as shown above.
+ </p>
+<p>
+ For larger values of the non-centrality parameter, Ding's method can take
+ an unreasonable number of terms before convergence is achieved. Furthermore,
+ the largest term is not the first term, so in extreme cases the first term
+ may be zero, leading to a zero result, even though the true value may be
+ non-zero.
+ </p>
+<p>
+ Therefore, when the non-centrality parameter is greater than 200, the method
+ due to Krishnamoorthy (see "Computing discrete mixtures of continuous
+ distributions: noncentral chisquare, noncentral t and the distribution
+ of the square of the sample multiple correlation coefficient", Denise
+ Benton and K. Krishnamoorthy, Computational Statistics & Data Analysis,
+ 43, (2003), 249-267) is used.
+ </p>
+<p>
+ This method uses the well known sum:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_chi_squ_ref5.png"></span>
+ </p>
+<p>
+ Where P<sub>a</sub>(x) is the incomplete gamma function.
+ </p>
+<p>
+ The method starts at the λth term, which is where the Poisson weighting
+ function achieves its maximum value, although this is not necessarily the
+ largest overall term. Subsequent terms are calculated via the normal recurrence
+ relations for the incomplete gamma function, and iteration proceeds both
+ forwards and backwards until sufficient precision has been achieved. It
+ should be noted that recurrence in the forwards direction of P<sub>a</sub>(x) is numerically
+ unstable. However, since we always start <span class="emphasis"><em>after</em></span> the
+ largest term in the series, numeric instability is introduced more slowly
+ than the series converges.
+ </p>
+<p>
+ Computation of the complement of the CDF uses an extension of Krishnamoorthy's
+ method, given that:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_chi_squ_ref6.png"></span>
+ </p>
+<p>
+ we can again start at the λ'th term and proceed in both directions from
+ there until the required precision is achieved. This time it is backwards
+ recursion on the incomplete gamma function Q<sub>a</sub>(x) which is unstable. However,
+ as long as we start well <span class="emphasis"><em>before</em></span> the largest term,
+ this is not an issue in practice.
+ </p>
+<p>
+ The PDF is computed directly using the relation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_chi_squ_ref3.png"></span>
+ </p>
+<p>
+ Where <span class="emphasis"><em>f(x; v)</em></span> is the PDF of the central <a class="link" href="chi_squared_dist.html" title="Chi Squared Distribution">Chi
+ Squared Distribution</a> and <span class="emphasis"><em>I<sub>v</sub>(x)</em></span> is a modified
+ Bessel function, see <a class="link" href="../../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a>.
+ For small values of the non-centrality parameter the relation in terms
+ of <a class="link" href="../../bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a> is used.
+ However, this method fails for large values of the non-centrality parameter,
+ so in that case the infinite sum is evaluated using the method of Benton
+ and Krishnamoorthy, and the usual recurrence relations for successive terms.
+ </p>
+<p>
+ The quantile functions are computed by numeric inversion of the CDF.
+ </p>
+<p>
+ There is no <a href="http://en.wikipedia.org/wiki/Closed_form" target="_top">closed
+ form</a> for the mode of the noncentral chi-squared distribution: it
+ is computed numerically by finding the maximum of the PDF. Likewise, the
+ median is computed numerically via the quantile.
+ </p>
+<p>
+ The remaining non-member functions use the following formulas:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_chi_squ_ref7.png"></span>
+ </p>
+<p>
+ Some analytic properties of noncentral distributions (particularly unimodality,
+ and monotonicity of their modes) are surveyed and summarized by:
+ </p>
+<p>
+ Andrea van Aubel & Wolfgang Gawronski, Applied Mathematics and Computation,
+ 141 (2003) 3-12.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="nc_beta_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nc_f_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_f_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_f_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,400 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Noncentral F Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">
+<link rel="next" href="nc_t_dist.html" title="Noncentral T Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="nc_chi_squared_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nc_t_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_nc_f_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.nc_f_dist"></a><a class="link" href="nc_f_dist.html" title="Noncentral F Distribution">Noncentral F
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">non_central_f</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">non_central_f_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">non_central_f_distribution</span><span class="special"><></span> <span class="identifier">non_central_f</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">non_central_f_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">non_central_f_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">v1</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">v2</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">);</span>
+
+ <span class="comment">// Accessor to degrees_of_freedom parameters v1 & v2:</span>
+ <span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom1</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom2</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Accessor to non-centrality parameter lambda:</span>
+ <span class="identifier">RealType</span> <span class="identifier">non_centrality</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The noncentral F distribution is a generalization of the <a class="link" href="f_dist.html" title="F Distribution">Fisher
+ F Distribution</a>. It is defined as the ratio
+ </p>
+<pre class="programlisting"><span class="identifier">F</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">X</span><span class="special">/</span><span class="identifier">v1</span><span class="special">)</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">Y</span><span class="special">/</span><span class="identifier">v2</span><span class="special">)</span>
+</pre>
+<p>
+ where X is a noncentral χ<sup>2</sup>
+random variable with <span class="emphasis"><em>v1</em></span> degrees
+ of freedom and non-centrality parameter λ, and Y is a central χ<sup>2</sup> random variable
+ with <span class="emphasis"><em>v2</em></span> degrees of freedom.
+ </p>
+<p>
+ This gives the following PDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_f_ref1.png"></span>
+ </p>
+<p>
+ where L<sub>a</sub><sup>b</sup>(c) is a generalised Laguerre polynomial and B(a,b) is the <a class="link" href="../../sf_beta/beta_function.html" title="Beta">beta</a> function, or
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_f_ref2.png"></span>
+ </p>
+<p>
+ The following graph illustrates how the distribution changes for different
+ values of λ:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/nc_f_pdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_f_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_f_dist.member_functions"></a></span><a class="link" href="nc_f_dist.html#math_toolkit.dist_ref.dists.nc_f_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">non_central_f_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">v1</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">v2</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">lambda</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a non-central beta distribution with parameters <span class="emphasis"><em>v1</em></span>
+ and <span class="emphasis"><em>v2</em></span> and non-centrality parameter <span class="emphasis"><em>lambda</em></span>.
+ </p>
+<p>
+ Requires v1 > 0, v2 > 0 and lambda >= 0, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom1</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>v1</em></span> from which this object was
+ constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom2</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>v2</em></span> from which this object was
+ constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">non_centrality</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the non-centrality parameter <span class="emphasis"><em>lambda</em></span> from which
+ this object was constructed.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_f_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_f_dist.non_member_accessors"></a></span><a class="link" href="nc_f_dist.html#math_toolkit.dist_ref.dists.nc_f_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [0, +∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_f_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_f_dist.accuracy"></a></span><a class="link" href="nc_f_dist.html#math_toolkit.dist_ref.dists.nc_f_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ This distribution is implemented in terms of the <a class="link" href="nc_beta_dist.html" title="Noncentral Beta Distribution">Noncentral
+ Beta Distribution</a>: refer to that distribution for accuracy data.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_f_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_f_dist.tests"></a></span><a class="link" href="nc_f_dist.html#math_toolkit.dist_ref.dists.nc_f_dist.tests">Tests</a>
+ </h5>
+<p>
+ Since this distribution is implemented by adapting another distribution,
+ the tests consist of basic sanity checks computed by the <a href="http://www.r-project.org/" target="_top">R-2.5.1
+ Math library statistical package</a> and its pbeta and dbeta functions.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_f_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_f_dist.implementation"></a></span><a class="link" href="nc_f_dist.html#math_toolkit.dist_ref.dists.nc_f_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>v1</em></span> and <span class="emphasis"><em>v2</em></span>
+ are the first and second degrees of freedom parameters of the distribution,
+ λ
+is the non-centrality parameter, <span class="emphasis"><em>x</em></span> is the random variate,
+ <span class="emphasis"><em>p</em></span> is the probability, and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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>
+ Implemented in terms of the non-central beta PDF using the relation:
+ </p>
+ <p>
+ f(x;v1,v2;λ) = (v1/v2) / ((1+y)*(1+y)) * g(y/(1+y);v1/2,v2/2;λ)
+ </p>
+ <p>
+ where g(x; a, b; λ) is the non central beta PDF, and:
+ </p>
+ <p>
+ y = x * v1 / v2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ p = B<sub>y</sub>(v1/2, v2/2; λ)
+ </p>
+ <p>
+ where B<sub>x</sub>(a, b; λ) is the noncentral beta distribution CDF and
+ </p>
+ <p>
+ y = x * v1 / v2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ q = 1 - B<sub>y</sub>(v1/2, v2/2; λ)
+ </p>
+ <p>
+ where 1 - B<sub>x</sub>(a, b; λ) is the complement of the noncentral beta
+ distribution CDF and
+ </p>
+ <p>
+ y = x * v1 / v2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ x = (bx / (1-bx)) * (v1 / v2)
+ </p>
+ <p>
+ where
+ </p>
+ <p>
+ bx = Q<sub>p</sub><sup>-1</sup>(v1/2, v2/2; λ)
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ Q<sub>p</sub><sup>-1</sup>(v1/2, v2/2; λ)
+ </p>
+ <p>
+ is the noncentral beta quantile.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ <p>
+ from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ x = (bx / (1-bx)) * (v1 / v2)
+ </p>
+ <p>
+ where
+ </p>
+ <p>
+ bx = QC<sub>q</sub><sup>-1</sup>(v1/2, v2/2; λ)
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ QC<sub>q</sub><sup>-1</sup>(v1/2, v2/2; λ)
+ </p>
+ <p>
+ is the noncentral beta quantile from the complement.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ v2 * (v1 + l) / (v1 * (v2 - 2))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ By numeric maximalisation of the PDF.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to, <a href="http://mathworld.wolfram.com/NoncentralF-Distribution.html" target="_top">Weisstein,
+ Eric W. "Noncentral F-Distribution." From MathWorld--A
+ Wolfram Web Resource.</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to, <a href="http://mathworld.wolfram.com/NoncentralF-Distribution.html" target="_top">Weisstein,
+ Eric W. "Noncentral F-Distribution." From MathWorld--A
+ Wolfram Web Resource.</a>, and to the <a href="http://reference.wolfram.com/mathematica/ref/NoncentralFRatioDistribution.html" target="_top">Mathematica
+ documentation</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis and kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to, <a href="http://mathworld.wolfram.com/NoncentralF-Distribution.html" target="_top">Weisstein,
+ Eric W. "Noncentral F-Distribution." From MathWorld--A
+ Wolfram Web Resource.</a>, and to the <a href="http://reference.wolfram.com/mathematica/ref/NoncentralFRatioDistribution.html" target="_top">Mathematica
+ documentation</a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Some analytic properties of noncentral distributions (particularly unimodality,
+ and monotonicity of their modes) are surveyed and summarized by:
+ </p>
+<p>
+ Andrea van Aubel & Wolfgang Gawronski, Applied Mathematics and Computation,
+ 141 (2003) 3-12.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="nc_chi_squared_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nc_t_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_t_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/nc_t_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,405 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Noncentral T Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="nc_f_dist.html" title="Noncentral F Distribution">
+<link rel="next" href="normal_dist.html" title="Normal (Gaussian) Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="nc_f_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="normal_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_nc_t_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.nc_t_dist"></a><a class="link" href="nc_t_dist.html" title="Noncentral T Distribution">Noncentral T
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">non_central_t</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">non_central_t_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">non_central_t_distribution</span><span class="special"><></span> <span class="identifier">non_central_t</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">non_central_t_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">non_central_t_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">delta</span><span class="special">);</span>
+
+ <span class="comment">// Accessor to degrees_of_freedom parameter v:</span>
+ <span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Accessor to non-centrality parameter delta:</span>
+ <span class="identifier">RealType</span> <span class="identifier">non_centrality</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The noncentral T distribution is a generalization of the <a class="link" href="students_t_dist.html" title="Students t Distribution">Students
+ t Distribution</a>. Let X have a normal distribution with mean δ and variance
+ 1, and let ν S<sup>2</sup> have a chi-squared distribution with degrees of freedom ν.
+ Assume that X and S<sup>2</sup> are independent. The distribution of t<sub>ν</sub>(δ)=X/S is called
+ a noncentral t distribution with degrees of freedom ν and noncentrality parameter
+ δ.
+ </p>
+<p>
+ This gives the following PDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_t_ref1.png"></span>
+ </p>
+<p>
+ where <sub>1</sub>F<sub>1</sub>(a;b;x) is a confluent hypergeometric function.
+ </p>
+<p>
+ The following graph illustrates how the distribution changes for different
+ values of ν and δ:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/nc_t_pdf.png" align="middle"></span>
+ <span class="inlinemediaobject"><img src="../../../../graphs/nc_t_cdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_t_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_t_dist.member_functions"></a></span><a class="link" href="nc_t_dist.html#math_toolkit.dist_ref.dists.nc_t_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">non_central_t_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">delta</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a non-central t distribution with degrees of freedom parameter
+ <span class="emphasis"><em>v</em></span> and non-centrality parameter <span class="emphasis"><em>delta</em></span>.
+ </p>
+<p>
+ Requires <span class="emphasis"><em>v</em></span> > 0 (including positive infinity) and
+ finite <span class="emphasis"><em>delta</em></span>, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>v</em></span> from which this object was
+ constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">non_centrality</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the non-centrality parameter <span class="emphasis"><em>delta</em></span> from which
+ this object was constructed.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_t_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_t_dist.non_member_accessors"></a></span><a class="link" href="nc_t_dist.html#math_toolkit.dist_ref.dists.nc_t_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [-∞, +∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_t_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_t_dist.accuracy"></a></span><a class="link" href="nc_t_dist.html#math_toolkit.dist_ref.dists.nc_t_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon)
+ found on various platforms with various floating-point types. Unless otherwise
+ specified, any floating-point type that is narrower than the one shown
+ will have <a class="link" href="../../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.dist_ref.dists.nc_t_dist.errors_in_cdf_of_the_noncentral_"></a><p class="title"><b>Table 2.6. Errors In CDF of the Noncentral T Distribution</b></p>
+<div class="table-contents"><table class="table" summary="Errors In CDF of the Noncentral T Distribution">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size (bits)
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ ν, δ < 600
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=120 Mean=26
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA32, gcc-4.1.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=121 Mean=26
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=122 Mean=25
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=115 Mean=24
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The complexity of the current algorithm is dependent upon δ<sup>2</sup>: consequently
+ the time taken to evaluate the CDF increases rapidly for δ > 500, likewise
+ the accuracy decreases rapidly for very large δ.
+ </p></td></tr>
+</table></div>
+<p>
+ Accuracy for the quantile and PDF functions should be broadly similar.
+ The <span class="emphasis"><em>mode</em></span> is determined numerically and cannot in principal
+ be more accurate than the square root of floating-point type FPT epsilon,
+ accessed using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">epsilon</span><span class="special"><</span><span class="identifier">FPT</span><span class="special">>()</span></code>.
+ For 64-bit <code class="computeroutput"><span class="keyword">double</span></code>, epsilon
+ is about 1e-16, so the fractional accuracy is limited to 1e-8.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_t_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_t_dist.tests"></a></span><a class="link" href="nc_t_dist.html#math_toolkit.dist_ref.dists.nc_t_dist.tests">Tests</a>
+ </h5>
+<p>
+ There are two sets of tests of this distribution:
+ </p>
+<p>
+ Basic sanity checks compare this implementation to the test values given
+ in "Computing discrete mixtures of continuous distributions: noncentral
+ chisquare, noncentral t and the distribution of the square of the sample
+ multiple correlation coefficient." Denise Benton, K. Krishnamoorthy,
+ Computational Statistics & Data Analysis 43 (2003) 249-267.
+ </p>
+<p>
+ Accuracy checks use test data computed with this implementation and arbitary
+ precision interval arithmetic: this test data is believed to be accurate
+ to at least 50 decimal places.
+ </p>
+<p>
+ The cases of large (or infinite) ν and/or large δ has received special treatment
+ to avoid catastrophic loss of accuracy. New tests have been added to confirm
+ the improvement achieved.
+ </p>
+<p>
+ From Boost 1.52, degrees of freedom ν can be +∞
+when the normal distribution
+ located at δ
+(equivalent to the central Student's t distribution) is used
+ in place for accuracy and speed.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.nc_t_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.nc_t_dist.implementation"></a></span><a class="link" href="nc_t_dist.html#math_toolkit.dist_ref.dists.nc_t_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ The CDF is computed using a modification of the method described in "Computing
+ discrete mixtures of continuous distributions: noncentral chisquare, noncentral
+ t and the distribution of the square of the sample multiple correlation
+ coefficient." Denise Benton, K. Krishnamoorthy, Computational Statistics
+ & Data Analysis 43 (2003) 249-267.
+ </p>
+<p>
+ This uses the following formula for the CDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_t_ref2.png"></span>
+ </p>
+<p>
+ Where I<sub>x</sub>(a,b) is the incomplete beta function, and Φ(x) is the normal CDF
+ at x.
+ </p>
+<p>
+ Iteration starts at the largest of the Poisson weighting terms (at i =
+ δ<sup>2</sup> / 2) and then proceeds in both directions as per Benton and Krishnamoorthy's
+ paper.
+ </p>
+<p>
+ Alternatively, by considering what happens when t = ∞, we have x = 1, and
+ therefore I<sub>x</sub>(a,b) = 1 and:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_t_ref3.png"></span>
+ </p>
+<p>
+ From this we can easily show that:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_t_ref4.png"></span>
+ </p>
+<p>
+ and therefore we have a means to compute either the probability or its
+ complement directly without the risk of cancellation error. The crossover
+ criterion for choosing whether to calculate the CDF or its complement is
+ the same as for the <a class="link" href="nc_beta_dist.html" title="Noncentral Beta Distribution">Noncentral
+ Beta Distribution</a>.
+ </p>
+<p>
+ The PDF can be computed by a very similar method using:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/nc_t_ref5.png"></span>
+ </p>
+<p>
+ Where I<sub>x</sub><sup>'</sup>(a,b) is the derivative of the incomplete beta function.
+ </p>
+<p>
+ For both the PDF and CDF we switch to approximating the distribution by
+ a Student's t distribution centred on δ when ν is very large. The crossover
+ location appears to be when δ/(4ν) < ε, this location was estimated by
+ inspection of equation 2.6 in "A Comparison of Approximations To Percentiles
+ of the Noncentral t-Distribution". H. Sahai and M. M. Ojeda, Revista
+ Investigacion Operacional Vol 21, No 2, 2000, page 123.
+ </p>
+<p>
+ Equation 2.6 is a Fisher-Cornish expansion by Eeden and Johnson. The second
+ term includes the ratio δ/(4ν), so when this term become negligible, this
+ and following terms can be ignored, leaving just Student's t distribution
+ centred on δ.
+ </p>
+<p>
+ This was also confirmed by experimental testing.
+ </p>
+<p>
+ See also
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ "Some Approximations to the Percentage Points of the Noncentral
+ t-Distribution". C. van Eeden. International Statistical Review,
+ 29, 4-31.
+ </li>
+<li class="listitem">
+ "Continuous Univariate Distributions". N.L. Johnson, S. Kotz
+ and N. Balkrishnan. 1995. John Wiley and Sons New York.
+ </li>
+</ul></div>
+<p>
+ The quantile is calculated via the usual <a class="link" href="../../internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748">derivative-free
+ root-finding techniques</a>, with the initial guess taken as the quantile
+ of a normal approximation to the noncentral T.
+ </p>
+<p>
+ There is no closed form for the mode, so this is computed via functional
+ maximisation of the PDF.
+ </p>
+<p>
+ The remaining functions (mean, variance etc) are implemented using the
+ formulas given in Weisstein, Eric W. "Noncentral Student's t-Distribution."
+ From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/NoncentralStudentst-Distribution.html
+ and in the <a href="http://reference.wolfram.com/mathematica/ref/NoncentralStudentTDistribution.html" target="_top">Mathematica
+ documentation</a>.
+ </p>
+<p>
+ Some analytic properties of noncentral distributions (particularly unimodality,
+ and monotonicity of their modes) are surveyed and summarized by:
+ </p>
+<p>
+ Andrea van Aubel & Wolfgang Gawronski, Applied Mathematics and Computation,
+ 141 (2003) 3-12.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="nc_f_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="normal_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/negative_binomial_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/negative_binomial_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,873 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Negative Binomial Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="lognormal_dist.html" title="Log Normal Distribution">
+<link rel="next" href="nc_beta_dist.html" title="Noncentral Beta Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="lognormal_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nc_beta_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_negative_binomial_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist"></a><a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">negative_binomial_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">negative_binomial_distribution</span><span class="special"><></span> <span class="identifier">negative_binomial</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">negative_binomial_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 from successes and success_fraction:</span>
+ <span class="identifier">negative_binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+
+ <span class="comment">// Parameter accessors:</span>
+ <span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// Bounds on success fraction:</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// alpha</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// alpha</span>
+
+ <span class="comment">// Estimate min/max number of trials:</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// Number of failures.</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// Success fraction.</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// Probability threshold alpha.</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// Number of failures.</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// Success fraction.</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// Probability threshold alpha.</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The class type <code class="computeroutput"><span class="identifier">negative_binomial_distribution</span></code>
+ represents a <a href="http://en.wikipedia.org/wiki/Negative_binomial_distribution" target="_top">negative_binomial
+ distribution</a>: it is used when there are exactly two mutually exclusive
+ outcomes of a <a href="http://en.wikipedia.org/wiki/Bernoulli_trial" target="_top">Bernoulli
+ trial</a>: these outcomes are labelled "success" and "failure".
+ </p>
+<p>
+ For k + r Bernoulli trials each with success fraction p, the negative_binomial
+ distribution gives the probability of observing k failures and r successes
+ with success on the last trial. The negative_binomial distribution assumes
+ that success_fraction p is fixed for all (k + r) trials.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The random variable for the negative binomial distribution is the number
+ of trials, (the number of successes is a fixed property of the distribution)
+ whereas for the binomial, the random variable is the number of successes,
+ for a fixed number of trials.
+ </p></td></tr>
+</table></div>
+<p>
+ It has the PDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/neg_binomial_ref.png"></span>
+ </p>
+<p>
+ The following graph illustrate how the PDF varies as the success fraction
+ <span class="emphasis"><em>p</em></span> changes:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/negative_binomial_pdf_1.png" align="middle"></span>
+ </p>
+<p>
+ Alternatively, this graph shows how the shape of the PDF varies as the
+ number of successes changes:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/negative_binomial_pdf_2.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.related_distributions"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.related_distributions">Related
+ Distributions</a>
+ </h5>
+<p>
+ The name negative binomial distribution is reserved by some to the case
+ where the successes parameter r is an integer. This integer version is
+ also called the <a href="http://mathworld.wolfram.com/PascalDistribution.html" target="_top">Pascal
+ distribution</a>.
+ </p>
+<p>
+ This implementation uses real numbers for the computation throughout (because
+ it uses the <span class="bold"><strong>real-valued</strong></span> incomplete beta
+ function family of functions). This real-valued version is also called
+ the Polya Distribution.
+ </p>
+<p>
+ The Poisson distribution is a generalization of the Pascal distribution,
+ where the success parameter r is an integer: to obtain the Pascal distribution
+ you must ensure that an integer value is provided for r, and take integer
+ values (floor or ceiling) from functions that return a number of successes.
+ </p>
+<p>
+ For large values of r (successes), the negative binomial distribution converges
+ to the Poisson distribution.
+ </p>
+<p>
+ The geometric distribution is a special case where the successes parameter
+ r = 1, so only a first and only success is required. geometric(p) = negative_binomial(1,
+ p).
+ </p>
+<p>
+ The Poisson distribution is a special case for large successes
+ </p>
+<p>
+ poisson(λ) = lim <sub>r → ∞</sub>   negative_binomial(r, r / (λ + r)))
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The Negative Binomial distribution is a discrete distribution: internally,
+ functions like the <code class="computeroutput"><span class="identifier">cdf</span></code>
+ and <code class="computeroutput"><span class="identifier">pdf</span></code> are treated "as
+ if" they are continuous functions, but in reality the results returned
+ from these functions only have meaning if an integer value is provided
+ for the random variate argument.
+ </p>
+<p>
+ The quantile function will by default return an integer result that has
+ been <span class="emphasis"><em>rounded outwards</em></span>. That is to say lower quantiles
+ (where the probability is less than 0.5) are rounded downward, and upper
+ quantiles (where the probability is greater than 0.5) are rounded upwards.
+ This behaviour ensures that if an X% quantile is requested, then <span class="emphasis"><em>at
+ least</em></span> the requested coverage will be present in the central
+ region, and <span class="emphasis"><em>no more than</em></span> the requested coverage
+ will be present in the tails.
+ </p>
+<p>
+ This behaviour can be changed so that the quantile functions are rounded
+ differently, or even return a real-valued result using <a class="link" href="../../pol_overview.html" title="Policy Overview">Policies</a>.
+ It is strongly recommended that you read the tutorial <a class="link" href="../../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a> before using the quantile
+ function on the Negative Binomial distribution. The <a class="link" href="../../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">reference
+ docs</a> describe how to change the rounding policy for these distributions.
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.member_functions"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<h6>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.construct"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.construct">Construct</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">negative_binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ Constructor: <span class="emphasis"><em>r</em></span> is the total number of successes,
+ <span class="emphasis"><em>p</em></span> is the probability of success of a single trial.
+ </p>
+<p>
+ Requires: <code class="computeroutput"><span class="identifier">r</span> <span class="special">></span>
+ <span class="number">0</span></code> and <code class="computeroutput"><span class="number">0</span>
+ <span class="special"><=</span> <span class="identifier">p</span>
+ <span class="special"><=</span> <span class="number">1</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.accessors"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.accessors">Accessors</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> <span class="comment">// successes / trials (0 <= p <= 1)</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>p</em></span> from which this distribution
+ was constructed.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> <span class="comment">// required successes (r > 0)</span>
+</pre>
+<p>
+ Returns the parameter <span class="emphasis"><em>r</em></span> from which this distribution
+ was constructed.
+ </p>
+<p>
+ The best method of calculation for the following functions is disputed:
+ see <a class="link" href="binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a> for more discussion.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.lower_bound_on_parameter_p"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.lower_bound_on_parameter_p">Lower
+ Bound on Parameter p</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">failures</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">)</span> <span class="comment">// (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.</span>
+</pre>
+<p>
+ Returns a <span class="bold"><strong>lower bound</strong></span> on the success fraction:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">failures</span></dt>
+<dd><p>
+ The total number of failures before the <span class="emphasis"><em>r</em></span>th
+ success.
+ </p></dd>
+<dt><span class="term">successes</span></dt>
+<dd><p>
+ The number of successes required.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The largest acceptable probability that the true value of the success
+ fraction is <span class="bold"><strong>less than</strong></span> the value
+ returned.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example, if you observe <span class="emphasis"><em>k</em></span> failures and <span class="emphasis"><em>r</em></span>
+ successes from <span class="emphasis"><em>n</em></span> = k + r trials the best estimate
+ for the success fraction is simply <span class="emphasis"><em>r/n</em></span>, but if you
+ want to be 95% sure that the true value is <span class="bold"><strong>greater
+ than</strong></span> some value, <span class="emphasis"><em>p<sub>min</sub></em></span>, then:
+ </p>
+<pre class="programlisting"><span class="identifier">p</span><sub>min</sub> <span class="special">=</span> <span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">failures</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ <a class="link" href="../../stat_tut/weg/neg_binom_eg/neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">See
+ negative binomial confidence interval example.</a>
+ </p>
+<p>
+ This function uses the Clopper-Pearson method of computing the lower bound
+ on the success fraction, whilst many texts refer to this method as giving
+ an "exact" result in practice it produces an interval that guarantees
+ <span class="emphasis"><em>at least</em></span> the coverage required, and may produce pessimistic
+ estimates for some combinations of <span class="emphasis"><em>failures</em></span> and <span class="emphasis"><em>successes</em></span>.
+ See:
+ </p>
+<p>
+ <a href="http://www.ucs.louisiana.edu/~kxk4695/Discrete_new.pdf" target="_top">Yong
+ Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some
+ Discrete Distributions. Computational statistics and data analysis, 2005,
+ vol. 48, no3, 605-621</a>.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.upper_bound_on_parameter_p"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.upper_bound_on_parameter_p">Upper
+ Bound on Parameter p</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.</span>
+</pre>
+<p>
+ Returns an <span class="bold"><strong>upper bound</strong></span> on the success
+ fraction:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">trials</span></dt>
+<dd><p>
+ The total number of trials conducted.
+ </p></dd>
+<dt><span class="term">successes</span></dt>
+<dd><p>
+ The number of successes that occurred.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The largest acceptable probability that the true value of the success
+ fraction is <span class="bold"><strong>greater than</strong></span> the value
+ returned.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example, if you observe <span class="emphasis"><em>k</em></span> successes from <span class="emphasis"><em>n</em></span>
+ trials the best estimate for the success fraction is simply <span class="emphasis"><em>k/n</em></span>,
+ but if you want to be 95% sure that the true value is <span class="bold"><strong>less
+ than</strong></span> some value, <span class="emphasis"><em>p<sub>max</sub></em></span>, then:
+ </p>
+<pre class="programlisting"><span class="identifier">p</span><sub>max</sub> <span class="special">=</span> <span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">r</span><span class="special">,</span> <span class="identifier">k</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ <a class="link" href="../../stat_tut/weg/neg_binom_eg/neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">See
+ negative binomial confidence interval example.</a>
+ </p>
+<p>
+ This function uses the Clopper-Pearson method of computing the lower bound
+ on the success fraction, whilst many texts refer to this method as giving
+ an "exact" result in practice it produces an interval that guarantees
+ <span class="emphasis"><em>at least</em></span> the coverage required, and may produce pessimistic
+ estimates for some combinations of <span class="emphasis"><em>failures</em></span> and <span class="emphasis"><em>successes</em></span>.
+ See:
+ </p>
+<p>
+ <a href="http://www.ucs.louisiana.edu/~kxk4695/Discrete_new.pdf" target="_top">Yong
+ Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some
+ Discrete Distributions. Computational statistics and data analysis, 2005,
+ vol. 48, no3, 605-621</a>.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h6"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.estimating_number_of_trials_to_e"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.estimating_number_of_trials_to_e">Estimating
+ Number of Trials to Ensure at Least a Certain Number of Failures</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of failures.</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction.</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// probability threshold (0.05 equivalent to 95%).</span>
+</pre>
+<p>
+ This functions estimates the number of trials required to achieve a certain
+ probability that <span class="bold"><strong>more than k failures will be observed</strong></span>.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">k</span></dt>
+<dd><p>
+ The target number of failures to be observed.
+ </p></dd>
+<dt><span class="term">p</span></dt>
+<dd><p>
+ The probability of <span class="emphasis"><em>success</em></span> for each trial.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The maximum acceptable risk that only k failures or fewer will be
+ observed.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the smallest number of trials we must conduct to be 95% sure of
+ seeing 10 failures that occur with frequency one half.
+ </p>
+<p>
+ <a class="link" href="../../stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html" title="Estimating Sample Sizes for the Negative Binomial.">Worked
+ Example.</a>
+ </p>
+<p>
+ This function uses numeric inversion of the negative binomial distribution
+ to obtain the result: another interpretation of the result, is that it
+ finds the number of trials (success+failures) that will lead to an <span class="emphasis"><em>alpha</em></span>
+ probability of observing k failures or fewer.
+ </p>
+<h6>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h7"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.estimating_number_of_trials_to_0"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.estimating_number_of_trials_to_0">Estimating
+ Number of Trials to Ensure a Maximum Number of Failures or Less</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of failures.</span>
+ <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction.</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// probability threshold (0.05 equivalent to 95%).</span>
+</pre>
+<p>
+ This functions estimates the maximum number of trials we can conduct and
+ achieve a certain probability that <span class="bold"><strong>k failures or
+ fewer will be observed</strong></span>.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">k</span></dt>
+<dd><p>
+ The maximum number of failures to be observed.
+ </p></dd>
+<dt><span class="term">p</span></dt>
+<dd><p>
+ The probability of <span class="emphasis"><em>success</em></span> for each trial.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The maximum acceptable <span class="emphasis"><em>risk</em></span> that more than k
+ failures will be observed.
+ </p></dd>
+</dl>
+</div>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">-</span><span class="number">1.0</span><span class="special">/</span><span class="number">1000000</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the largest number of trials we can conduct and still be 95% sure
+ of seeing no failures that occur with frequency one in one million.
+ </p>
+<p>
+ This function uses numeric inversion of the negative binomial distribution
+ to obtain the result: another interpretation of the result, is that it
+ finds the number of trials (success+failures) that will lead to an <span class="emphasis"><em>alpha</em></span>
+ probability of observing more than k failures.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h8"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.non_member_accessors"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ However it's worth taking a moment to define what these actually mean in
+ the context of this distribution:
+ </p>
+<div class="table">
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.meaning_of_the_non_member_access"></a><p class="title"><b>Table 2.3. Meaning of the non-member accessors.</b></p>
+<div class="table-contents"><table class="table" summary="Meaning of the non-member accessors.">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Meaning
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density
+ Function</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The probability of obtaining <span class="bold"><strong>exactly k
+ failures</strong></span> from k+r trials with success fraction p.
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">)</span></pre>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution
+ Function</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The probability of obtaining <span class="bold"><strong>k failures
+ or fewer</strong></span> from k+r trials with success fraction p and
+ success on the last trial. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">)</span></pre>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.ccdf">Complement of
+ the Cumulative Distribution Function</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The probability of obtaining <span class="bold"><strong>more than
+ k failures</strong></span> from k+r trials with success fraction p
+ and success on the last trial. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">))</span></pre>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The <span class="bold"><strong>greatest</strong></span> number of failures
+ k expected to be observed from k+r trials with success fraction
+ p, at probability P. Note that the value returned is a real-number,
+ and not an integer. Depending on the use case you may want to
+ take either the floor or ceiling of the real result. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">p</span><span class="special">),</span> <span class="identifier">P</span><span class="special">)</span></pre>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile_c">Quantile
+ from the complement of the probability</a>
+ </p>
+ </td>
+<td>
+ <p>
+ The <span class="bold"><strong>smallest</strong></span> number of failures
+ k expected to be observed from k+r trials with success fraction
+ p, at probability P. Note that the value returned is a real-number,
+ and not an integer. Depending on the use case you may want to
+ take either the floor or ceiling of the real result. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">p</span><span class="special">),</span> <span class="identifier">P</span><span class="special">))</span></pre>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h9"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.accuracy"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ This distribution is implemented using the incomplete beta functions <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a> and <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>:
+ please refer to these functions for information on accuracy.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.negative_binomial_dist.h10"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.negative_binomial_dist.implementation"></a></span><a class="link" href="negative_binomial_dist.html#math_toolkit.dist_ref.dists.negative_binomial_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table, <span class="emphasis"><em>p</em></span> is the probability that
+ any one trial will be successful (the success fraction), <span class="emphasis"><em>r</em></span>
+ is the number of successes, <span class="emphasis"><em>k</em></span> is the number of failures,
+ <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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>
+ pdf = exp(lgamma(r + k) - lgamma(r) - lgamma(k+1)) * pow(p, r)
+ * pow((1-p), k)
+ </p>
+ <p>
+ Implementation is in terms of <a class="link" href="../../sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function">ibeta_derivative</a>:
+ </p>
+ <p>
+ (p/(r + k)) * ibeta_derivative(r, static_cast<RealType>(k+1),
+ p) The function <a class="link" href="../../sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function">ibeta_derivative</a>
+ is used here, since it has already been optimised for the lowest
+ possible error - indeed this is really just a thin wrapper around
+ part of the internals of the incomplete beta function.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ cdf = I<sub>p</sub>(r, k+1) = ibeta(r, k+1, p)
+ </p>
+ <p>
+ = ibeta(r, static_cast<RealType>(k+1), p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation:
+ </p>
+ <p>
+ 1 - cdf = I<sub>p</sub>(k+1, r)
+ </p>
+ <p>
+ = ibetac(r, static_cast<RealType>(k+1), p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ ibeta_invb(r, p, P) - 1
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ ibetac_invb(r, p, Q) -1)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span><span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">p</span><span class="special">)/</span><span class="identifier">p</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span> <span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">p</span><span class="special">)</span>
+ <span class="special">/</span> <span class="identifier">p</span>
+ <span class="special">*</span> <span class="identifier">p</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">floor</span><span class="special">((</span><span class="identifier">r</span><span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span> <span class="special">-</span> <span class="identifier">p</span><span class="special">)/</span><span class="identifier">p</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special">(</span><span class="number">2</span>
+ <span class="special">-</span> <span class="identifier">p</span><span class="special">)</span> <span class="special">/</span>
+ <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">r</span> <span class="special">*</span>
+ <span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">p</span><span class="special">))</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="number">6</span> <span class="special">/</span>
+ <span class="identifier">r</span> <span class="special">+</span>
+ <span class="special">(</span><span class="identifier">p</span>
+ <span class="special">*</span> <span class="identifier">p</span><span class="special">)</span> <span class="special">/</span>
+ <span class="identifier">r</span> <span class="special">*</span>
+ <span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">p</span>
+ <span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="number">6</span> <span class="special">/</span>
+ <span class="identifier">r</span> <span class="special">+</span>
+ <span class="special">(</span><span class="identifier">p</span>
+ <span class="special">*</span> <span class="identifier">p</span><span class="special">)</span> <span class="special">/</span>
+ <span class="identifier">r</span> <span class="special">*</span>
+ <span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">p</span>
+ <span class="special">)</span> <span class="special">-</span><span class="number">3</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ parameter estimation member functions
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_lower_bound_on_p</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ ibeta_inv(successes, failures + 1, alpha)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_upper_bound_on_p</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ ibetac_inv(successes, failures, alpha) plus see comments in code.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_minimum_number_of_trials</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ ibeta_inva(k + 1, p, alpha)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">find_maximum_number_of_trials</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ ibetac_inva(k + 1, p, alpha)
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Implementation notes:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The real concept type (that deliberately lacks the Lanczos approximation),
+ was found to take several minutes to evaluate some extreme test values,
+ so the test has been disabled for this type.
+ </li>
+<li class="listitem">
+ Much greater speed, and perhaps greater accuracy, might be achieved
+ for extreme values by using a normal approximation. This is NOT been
+ tested or implemented.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="lognormal_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nc_beta_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/normal_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/normal_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,315 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Normal (Gaussian) Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="nc_t_dist.html" title="Noncentral T Distribution">
+<link rel="next" href="pareto.html" title="Pareto Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="nc_t_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="pareto.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_normal_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.normal_dist"></a><a class="link" href="normal_dist.html" title="Normal (Gaussian) Distribution">Normal (Gaussian)
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">normal_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">normal_distribution</span><span class="special"><></span> <span class="identifier">normal</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">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">// Construct:</span>
+ <span class="identifier">normal_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">sd</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+ <span class="comment">// Accessors:</span>
+ <span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <span class="comment">// location.</span>
+ <span class="identifier">RealType</span> <span class="identifier">standard_deviation</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <span class="comment">// scale.</span>
+ <span class="comment">// Synonyms, provided to allow generic use of find_location and find_scale.</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="identifier">RealType</span> <span class="identifier">scale</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The normal distribution is probably the most well known statistical distribution:
+ it is also known as the Gaussian Distribution. A normal distribution with
+ mean zero and standard deviation one is known as the <span class="emphasis"><em>Standard
+ Normal Distribution</em></span>.
+ </p>
+<p>
+ Given mean μ  and standard deviation σ  it has the PDF:
+ </p>
+<p>
+   <span class="inlinemediaobject"><img src="../../../../equations/normal_ref1.png"></span>
+ </p>
+<p>
+ The variation the PDF with its parameters is illustrated in the following
+ graph:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/normal_pdf.png" align="middle"></span>
+ </p>
+<p>
+ The cumulative distribution function is given by
+ </p>
+<p>
+   <span class="inlinemediaobject"><img src="../../../../equations/normal_cdf.png"></span>
+ </p>
+<p>
+ and illustrated by this graph
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/normal_cdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.normal_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.normal_dist.member_functions"></a></span><a class="link" href="normal_dist.html#math_toolkit.dist_ref.dists.normal_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">normal_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">sd</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a normal distribution with mean <span class="emphasis"><em>mean</em></span> and
+ standard deviation <span class="emphasis"><em>sd</em></span>.
+ </p>
+<p>
+ Requires sd > 0, otherwise <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is called.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<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>
+ both return the <span class="emphasis"><em>mean</em></span> of this distribution.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">standard_deviation</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<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>
+ both return the <span class="emphasis"><em>standard deviation</em></span> of this distribution.
+ (Redundant location and scale function are provided to match other similar
+ distributions, allowing the functions find_location and find_scale to be
+ used generically).
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.normal_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.normal_dist.non_member_accessors"></a></span><a class="link" href="normal_dist.html#math_toolkit.dist_ref.dists.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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [-[max_value], +[min_value]]. However,
+ the pdf of +∞ and -∞ = 0 is also supported, and cdf at -∞ = 0, cdf at +∞ = 1, and
+ complement cdf -∞ = 1 and +∞ = 0, if RealType permits.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.normal_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.normal_dist.accuracy"></a></span><a class="link" href="normal_dist.html#math_toolkit.dist_ref.dists.normal_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The normal distribution is implemented in terms of the <a class="link" href="../../sf_erf/error_function.html" title="Error Functions">error
+ function</a>, and as such should have very low error rates.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.normal_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.normal_dist.implementation"></a></span><a class="link" href="normal_dist.html#math_toolkit.dist_ref.dists.normal_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>m</em></span> is the mean of the distribution,
+ and <span class="emphasis"><em>s</em></span> is its standard deviation.
+ </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 the relation: pdf = e<sup>-(x-m)<sup>2</sup>/(2s<sup>2</sup>)</sup> / (s * sqrt(2*pi))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = 0.5 * <a class="link" href="../../sf_erf/error_function.html" title="Error Functions">erfc</a>(-(x-m)/(s*sqrt(2)))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = 0.5 * <a class="link" href="../../sf_erf/error_function.html" title="Error Functions">erfc</a>((x-m)/(s*sqrt(2)))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = m - s * sqrt(2) * <a class="link" href="../../sf_erf/error_inv.html" title="Error Function Inverses">erfc_inv</a>(2*p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = m + s * sqrt(2) * <a class="link" href="../../sf_erf/error_inv.html" title="Error Function Inverses">erfc_inv</a>(2*p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean and standard deviation
+ </p>
+ </td>
+<td>
+ <p>
+ The same as <code class="computeroutput"><span class="identifier">dist</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">dist</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ The same as the mean.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ median
+ </p>
+ </td>
+<td>
+ <p>
+ The same as the mean.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 3
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="nc_t_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="pareto.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/pareto.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/pareto.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,340 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Pareto Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="normal_dist.html" title="Normal (Gaussian) Distribution">
+<link rel="next" href="poisson_dist.html" title="Poisson Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="normal_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="poisson_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_pareto">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.pareto"></a><a class="link" href="pareto.html" title="Pareto Distribution">Pareto Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">pareto</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">pareto_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">pareto_distribution</span><span class="special"><></span> <span class="identifier">pareto</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">pareto_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="comment">// Constructor:</span>
+ <span class="identifier">pareto_distribution</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">1</span><span class="special">)</span>
+ <span class="comment">// Accessors:</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="identifier">RealType</span> <span class="identifier">shape</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/pareto_distribution" target="_top">Pareto
+ distribution</a> is a continuous distribution with the <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function (pdf)</a>:
+ </p>
+<p>
+ f(x; α, β) = αβ<sup>α</sup> / x<sup>α+ 1</sup>
+ </p>
+<p>
+ For shape parameter α   > 0, and scale parameter β   > 0. If x < β  , the
+ pdf is zero.
+ </p>
+<p>
+ The <a href="http://mathworld.wolfram.com/ParetoDistribution.html" target="_top">Pareto
+ distribution</a> often describes the larger compared to the smaller.
+ A classic example is that 80% of the wealth is owned by 20% of the population.
+ </p>
+<p>
+ The following graph illustrates how the PDF varies with the scale parameter
+ β:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/pareto_pdf1.png" align="middle"></span>
+ </p>
+<p>
+ And this graph illustrates how the PDF varies with the shape parameter
+ α:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/pareto_pdf2.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.pareto.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.pareto.related_distributions"></a></span><a class="link" href="pareto.html#math_toolkit.dist_ref.dists.pareto.related_distributions">Related
+ distributions</a>
+ </h5>
+<h5>
+<a name="math_toolkit.dist_ref.dists.pareto.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.pareto.member_functions"></a></span><a class="link" href="pareto.html#math_toolkit.dist_ref.dists.pareto.member_functions">Member Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">pareto_distribution</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">1</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a <a href="http://en.wikipedia.org/wiki/pareto_distribution" target="_top">pareto
+ distribution</a> with shape <span class="emphasis"><em>shape</em></span> and scale <span class="emphasis"><em>scale</em></span>.
+ </p>
+<p>
+ Requires that the <span class="emphasis"><em>shape</em></span> and <span class="emphasis"><em>scale</em></span>
+ parameters are both greater than zero, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </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 <span class="emphasis"><em>scale</em></span> parameter 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 <span class="emphasis"><em>shape</em></span> parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.pareto.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.pareto.non_member_accessors"></a></span><a class="link" href="pareto.html#math_toolkit.dist_ref.dists.pareto.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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The supported domain of the random variable is [scale, ∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.pareto.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.pareto.accuracy"></a></span><a class="link" href="pareto.html#math_toolkit.dist_ref.dists.pareto.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The Pareto distribution is implemented in terms of the standard library
+ <code class="computeroutput"><span class="identifier">exp</span></code> functions plus <a class="link" href="../../powers/expm1.html" title="expm1">expm1</a> and so should have very
+ small errors, usually only a few epsilon.
+ </p>
+<p>
+ If probability is near to unity (or the complement of a probability near
+ zero) see also <a class="link" href="../../stat_tut/overview/complements.html#why_complements">why complements?</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.pareto.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.pareto.implementation"></a></span><a class="link" href="pareto.html#math_toolkit.dist_ref.dists.pareto.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table α   is the shape parameter of the distribution, and
+ β   is its scale parameter, <span class="emphasis"><em>x</em></span> is the random variate,
+ <span class="emphasis"><em>p</em></span> is the probability and its complement <span class="emphasis"><em>q
+ = 1-p</em></span>.
+ </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 the relation: pdf p = αβ<sup>α</sup>/x<sup>α +1</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: cdf p = 1 - (β   / x)<sup>α</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = 1 - p = -(β   / x)<sup>α</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = β / (1 - p)<sup>1/α</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = β / (q)<sup>1/α</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ αβ / (β - 1)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ βα<sup>2</sup> / (β - 1)<sup>2</sup> (β - 2)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ α
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to <a href="http://mathworld.wolfram.com/ParetoDistribution.html" target="_top">Weisstein,
+ Eric W. "Pareto Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to <a href="http://mathworld.wolfram.com/ParetoDistribution.html" target="_top">Weisstein,
+ Eric W. "Pareto Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to <a href="http://mathworld.wolfram.com/ParetoDistribution.html" target="_top">Weisstein,
+ Eric W. "pareto Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.pareto.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.pareto.references"></a></span><a class="link" href="pareto.html#math_toolkit.dist_ref.dists.pareto.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/pareto_distribution" target="_top">Pareto
+ Distribution</a>
+ </li>
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/paretoDistribution.html" target="_top">Weisstein,
+ Eric W. "Pareto Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </li>
+<li class="listitem">
+ Handbook of Statistical Distributions with Applications, K Krishnamoorthy,
+ ISBN 1-58488-635-8, Chapter 23, pp 257 - 267. (Note the meaning of
+ a and b is reversed in Wolfram and Krishnamoorthy).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="normal_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="poisson_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/poisson_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/poisson_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,320 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Poisson Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="pareto.html" title="Pareto Distribution">
+<link rel="next" href="rayleigh.html" title="Rayleigh Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="pareto.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="rayleigh.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_poisson_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.poisson_dist"></a><a class="link" href="poisson_dist.html" title="Poisson Distribution">Poisson Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">poisson</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">poisson_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">poisson_distribution</span><span class="special"><></span> <span class="identifier">poisson</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">poisson_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="identifier">poisson_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span> <span class="comment">// Constructor.</span>
+ <span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <span class="comment">// Accessor.</span>
+<span class="special">}</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces boost::math</span>
+</pre>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Poisson_distribution" target="_top">Poisson
+ distribution</a> is a well-known statistical discrete distribution.
+ It expresses the probability of a number of events (or failures, arrivals,
+ occurrences ...) occurring in a fixed period of time, provided these events
+ occur with a known mean rate λ  
+(events/time), and are independent of the
+ time since the last event.
+ </p>
+<p>
+ The distribution was discovered by Simé on-Denis Poisson (1781 to 1840).
+ </p>
+<p>
+ It has the Probability Mass Function:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/poisson_ref1.png"></span>
+ </p>
+<p>
+ for k events, with an expected number of events λ.
+ </p>
+<p>
+ The following graph illustrates how the PDF varies with the parameter λ:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/poisson_pdf_1.png" align="middle"></span>
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The Poisson distribution is a discrete distribution: internally, functions
+ like the <code class="computeroutput"><span class="identifier">cdf</span></code> and <code class="computeroutput"><span class="identifier">pdf</span></code> are treated "as if" they
+ are continuous functions, but in reality the results returned from these
+ functions only have meaning if an integer value is provided for the random
+ variate argument.
+ </p>
+<p>
+ The quantile function will by default return an integer result that has
+ been <span class="emphasis"><em>rounded outwards</em></span>. That is to say lower quantiles
+ (where the probability is less than 0.5) are rounded downward, and upper
+ quantiles (where the probability is greater than 0.5) are rounded upwards.
+ This behaviour ensures that if an X% quantile is requested, then <span class="emphasis"><em>at
+ least</em></span> the requested coverage will be present in the central
+ region, and <span class="emphasis"><em>no more than</em></span> the requested coverage
+ will be present in the tails.
+ </p>
+<p>
+ This behaviour can be changed so that the quantile functions are rounded
+ differently, or even return a real-valued result using <a class="link" href="../../pol_overview.html" title="Policy Overview">Policies</a>.
+ It is strongly recommended that you read the tutorial <a class="link" href="../../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a> before using the quantile
+ function on the Poisson distribution. The <a class="link" href="../../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">reference
+ docs</a> describe how to change the rounding policy for these distributions.
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.poisson_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.poisson_dist.member_functions"></a></span><a class="link" href="poisson_dist.html#math_toolkit.dist_ref.dists.poisson_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">poisson_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a poisson distribution with mean <span class="emphasis"><em>mean</em></span>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the <span class="emphasis"><em>mean</em></span> of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.poisson_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.poisson_dist.non_member_accessors"></a></span><a class="link" href="poisson_dist.html#math_toolkit.dist_ref.dists.poisson_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [0, ∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.poisson_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.poisson_dist.accuracy"></a></span><a class="link" href="poisson_dist.html#math_toolkit.dist_ref.dists.poisson_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The Poisson distribution is implemented in terms of the incomplete gamma
+ functions <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a> and
+ <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a> and as such
+ should have low error rates: but refer to the documentation of those functions
+ for more information. The quantile and its complement use the inverse gamma
+ functions and are therefore probably slightly less accurate: this is because
+ the inverse gamma functions are implemented using an iterative method with
+ a lower tolerance to avoid excessive computation.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.poisson_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.poisson_dist.implementation"></a></span><a class="link" href="poisson_dist.html#math_toolkit.dist_ref.dists.poisson_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table λ   is the mean of the distribution, <span class="emphasis"><em>k</em></span>
+ is the random variable, <span class="emphasis"><em>p</em></span> is the probability and
+ <span class="emphasis"><em>q = 1-p</em></span>.
+ </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 the relation: pdf = e<sup>-λ</sup> λ<sup>k</sup> / k!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = Γ(k+1, λ) / k! = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>(k+1,
+ λ)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>(k+1,
+ λ)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: k = <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inva</a>(λ,
+ p) - 1
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: k = <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inva</a>(λ,
+ q) - 1
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ λ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ floor (λ) or ⌊λ⌋
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 1/√λ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 3 + 1/λ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ 1/λ
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="pareto.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="rayleigh.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/rayleigh.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/rayleigh.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,337 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rayleigh Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="poisson_dist.html" title="Poisson Distribution">
+<link rel="next" href="skew_normal_dist.html" title="Skew Normal Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="poisson_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="skew_normal_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_rayleigh">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.rayleigh"></a><a class="link" href="rayleigh.html" title="Rayleigh Distribution">Rayleigh Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">rayleigh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">rayleigh_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">rayleigh_distribution</span><span class="special"><></span> <span class="identifier">rayleigh</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">rayleigh_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">// Construct:</span>
+ <span class="identifier">rayleigh_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">sigma</span> <span class="special">=</span> <span class="number">1</span><span class="special">)</span>
+ <span class="comment">// Accessors:</span>
+ <span class="identifier">RealType</span> <span class="identifier">sigma</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Rayleigh_distribution" target="_top">Rayleigh
+ distribution</a> is a continuous distribution with the <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function</a>:
+ </p>
+<p>
+ f(x; sigma) = x * exp(-x<sup>2</sup>/2 σ<sup>2</sup>) / σ<sup>2</sup>
+ </p>
+<p>
+ For sigma parameter σ   > 0, and x > 0.
+ </p>
+<p>
+ The Rayleigh distribution is often used where two orthogonal components
+ have an absolute value, for example, wind velocity and direction may be
+ combined to yield a wind speed, or real and imaginary components may have
+ absolute values that are Rayleigh distributed.
+ </p>
+<p>
+ The following graph illustrates how the Probability density Function(pdf)
+ varies with the shape parameter σ:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/rayleigh_pdf.png" align="middle"></span>
+ </p>
+<p>
+ and the Cumulative Distribution Function (cdf)
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/rayleigh_cdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.rayleigh.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.rayleigh.related_distributions"></a></span><a class="link" href="rayleigh.html#math_toolkit.dist_ref.dists.rayleigh.related_distributions">Related
+ distributions</a>
+ </h5>
+<p>
+ The absolute value of two independent normal distributions X and Y, √ (X<sup>2</sup> +
+ Y<sup>2</sup>) is a Rayleigh distribution.
+ </p>
+<p>
+ The Chi,
+ Rice
+ and Weibull
+ distributions are generalizations of the <a href="http://en.wikipedia.org/wiki/Rayleigh_distribution" target="_top">Rayleigh
+ distribution</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.rayleigh.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.rayleigh.member_functions"></a></span><a class="link" href="rayleigh.html#math_toolkit.dist_ref.dists.rayleigh.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">rayleigh_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">sigma</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a <a href="http://en.wikipedia.org/wiki/Rayleigh_distribution" target="_top">Rayleigh
+ distribution</a> with σ <span class="emphasis"><em>sigma</em></span>.
+ </p>
+<p>
+ Requires that the σ parameter is greater than zero, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">sigma</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the <span class="emphasis"><em>sigma</em></span> parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.rayleigh.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.rayleigh.non_member_accessors"></a></span><a class="link" href="rayleigh.html#math_toolkit.dist_ref.dists.rayleigh.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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [0, max_value].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.rayleigh.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.rayleigh.accuracy"></a></span><a class="link" href="rayleigh.html#math_toolkit.dist_ref.dists.rayleigh.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The Rayleigh distribution is implemented in terms of the standard library
+ <code class="computeroutput"><span class="identifier">sqrt</span></code> and <code class="computeroutput"><span class="identifier">exp</span></code> and as such should have very low
+ error rates. Some constants such as skewness and kurtosis were calculated
+ using NTL RR type with 150-bit accuracy, about 50 decimal digits.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.rayleigh.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.rayleigh.implementation"></a></span><a class="link" href="rayleigh.html#math_toolkit.dist_ref.dists.rayleigh.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table σ   is the sigma parameter of the distribution, <span class="emphasis"><em>x</em></span>
+ is the random variate, <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q
+ = 1-p</em></span>.
+ </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 the relation: pdf = x * exp(-x<sup>2</sup>)/2 σ<sup>2</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = 1 - exp(-x<sup>2</sup>/2) σ<sup>2</sup>   = -<a class="link" href="../../powers/expm1.html" title="expm1">expm1</a>(-x<sup>2</sup>/2)
+ σ<sup>2</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = exp(-x<sup>2</sup>/ 2) * σ<sup>2</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = sqrt(-2 * σ <sup>2</sup>) * log(1 - p)) = sqrt(-2
+ * σ <sup>2</sup>) * <a class="link" href="../../powers/log1p.html" title="log1p">log1p</a>(-p))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = sqrt(-2 * σ <sup>2</sup>) * log(q))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ σ * sqrt(π/2)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ σ<sup>2</sup> * (4 - π/2)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ σ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ Constant from <a href="http://mathworld.wolfram.com/RayleighDistribution.html" target="_top">Weisstein,
+ Eric W. "Weibull Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ Constant from <a href="http://mathworld.wolfram.com/RayleighDistribution.html" target="_top">Weisstein,
+ Eric W. "Weibull Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ Constant from <a href="http://mathworld.wolfram.com/RayleighDistribution.html" target="_top">Weisstein,
+ Eric W. "Weibull Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.rayleigh.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.rayleigh.references"></a></span><a class="link" href="rayleigh.html#math_toolkit.dist_ref.dists.rayleigh.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ http://en.wikipedia.org/wiki/Rayleigh_distribution
+ </li>
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/RayleighDistribution.html" target="_top">Weisstein,
+ Eric W. "Rayleigh Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="poisson_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="skew_normal_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/skew_normal_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/skew_normal_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,488 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Skew Normal Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.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">
+<div class="spirit-nav">
+<a accesskey="p" href="rayleigh.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="students_t_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_skew_normal_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.skew_normal_dist"></a><a class="link" href="skew_normal_dist.html" title="Skew Normal Distribution">Skew
+ Normal Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></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"><></span> <span class="identifier">normal</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></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 > 0 and is left skewed if shape < 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>
+     <span class="inlinemediaobject"><img src="../../../../equations/normal01_pdf.png"></span>
+ </p>
+<p>
+ and the cumulative distribution function
+ </p>
+<p>
+     <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 α, defined by O'Hagan and
+ Leonhard (1976) is
+ </p>
+<p>
+     <span class="inlinemediaobject"><img src="../../../../equations/skew_normal_pdf0.png"></span>
+ </p>
+<p>
+ Given location
+ ξ, scale
+ ω, and shape
+ α, it can be transformed,
+ to the form:
+ </p>
+<p>
+     <span class="inlinemediaobject"><img src="../../../../equations/skew_normal_pdf.png"></span>
+ </p>
+<p>
+ and CDF:
+ </p>
+<p>
+     <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>Φ(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_ref.dists.skew_normal_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.skew_normal_dist.member_functions"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.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 ξ, scale ω and shape α.
+ </p>
+<p>
+ Requires scale > 0, otherwise <a class="link" href="../../error_handling.html#math_toolkit.error_handling.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 ξ 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 ω 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 α 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="../../../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 δ is related to the shape α by δ = α / (1 + α²), 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_ref.dists.skew_normal_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.skew_normal_dist.references"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.dist_ref.dists.skew_normal_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-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_ref.dists.skew_normal_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.skew_normal_dist.non_member_accessors"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is <span class="emphasis"><em>-[max_value], +[min_value]</em></span>.
+ 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" style="list-style-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_ref.dists.skew_normal_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.skew_normal_dist.testing"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.dist_ref.dists.skew_normal_dist.testing">Testing</a>
+ </h5>
+<p>
+ The R Project for Statistical Computing
+ 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>
+<p>
+ <a href="http://www.wolfram.com/products/mathematica/index.html" target="_top">Wolfram
+ Mathematica</a> was also used to generate some more accurate spot test
+ data.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.skew_normal_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.skew_normal_dist.accuracy"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.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="../../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="../../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="../../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_ref.dists.skew_normal_dist.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.skew_normal_dist.implementation"></a></span><a class="link" href="skew_normal_dist.html#math_toolkit.dist_ref.dists.skew_normal_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table, ξ is the location of the distribution, and ω is its
+ scale, and α 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>Φ(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 ξ, scale ω, -shapeα), p)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ location
+ </p>
+ </td>
+<td>
+ <p>
+ location ξ
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ scale
+ </p>
+ </td>
+<td>
+ <p>
+ scale ω
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ shape
+ </p>
+ </td>
+<td>
+ <p>
+ shape α
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="students_t_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/students_t_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/students_t_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,420 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Students t Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="skew_normal_dist.html" title="Skew Normal Distribution">
+<link rel="next" href="triangular_dist.html" title="Triangular Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="skew_normal_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="triangular_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_students_t_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.students_t_dist"></a><a class="link" href="students_t_dist.html" title="Students t Distribution">Students
+ t Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">students_t</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">students_t_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">students_t_distribution</span><span class="special"><></span> <span class="identifier">students_t</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">students_t_distribution</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">// Construct:</span>
+ <span class="identifier">students_t_distribution</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="comment">// Accessor:</span>
+ <span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// degrees of freedom estimation:</span>
+ <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_degrees_of_freedom</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">difference_from_mean</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">sd</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">hint</span> <span class="special">=</span> <span class="number">100</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ A statistical distribution published by William Gosset in 1908. His employer,
+ Guinness Breweries, required him to publish under a pseudonym (possibly
+ to hide that they were using statistics), so he chose "Student".
+ Given N independent measurements, let
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/students_t_dist.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>M</em></span> is the population mean,<span class="emphasis"><em>μ</em></span>
+ is the sample mean, and <span class="emphasis"><em>s</em></span> is the sample variance.
+ </p>
+<p>
+ Student's t-distribution is defined as the distribution of the random variable
+ t which is - very loosely - the "best" that we can do not knowing
+ the true standard deviation of the sample. It has the PDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../equations/students_t_ref1.png"></span>
+ </p>
+<p>
+ The Student's t-distribution takes a single parameter: the number of degrees
+ of freedom of the sample. When the degrees of freedom is <span class="emphasis"><em>one</em></span>
+ then this distribution is the same as the Cauchy-distribution. As the number
+ of degrees of freedom tends towards infinity, then this distribution approaches
+ the normal-distribution. The following graph illustrates how the PDF varies
+ with the degrees of freedom ν:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/students_t_pdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.students_t_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.students_t_dist.member_functions"></a></span><a class="link" href="students_t_dist.html#math_toolkit.dist_ref.dists.students_t_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">students_t_distribution</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a Student's t-distribution with <span class="emphasis"><em>v</em></span> degrees
+ of freedom.
+ </p>
+<p>
+ Requires <span class="emphasis"><em>v</em></span> > 0, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ Note that non-integral degrees of freedom are supported, and are meaningful
+ under certain circumstances.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">degrees_of_freedom</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the number of degrees of freedom of this distribution.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_degrees_of_freedom</span><span class="special">(</span>
+ <span class="identifier">RealType</span> <span class="identifier">difference_from_mean</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">sd</span><span class="special">,</span>
+ <span class="identifier">RealType</span> <span class="identifier">hint</span> <span class="special">=</span> <span class="number">100</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the number of degrees of freedom required to observe a significant
+ result in the Student's t test when the mean differs from the "true"
+ mean by <span class="emphasis"><em>difference_from_mean</em></span>.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">difference_from_mean</span></dt>
+<dd><p>
+ The difference between the true mean and the sample mean that we
+ wish to show is significant.
+ </p></dd>
+<dt><span class="term">alpha</span></dt>
+<dd><p>
+ The maximum acceptable probability of rejecting the null hypothesis
+ when it is in fact true.
+ </p></dd>
+<dt><span class="term">beta</span></dt>
+<dd><p>
+ The maximum acceptable probability of failing to reject the null
+ hypothesis when it is in fact false.
+ </p></dd>
+<dt><span class="term">sd</span></dt>
+<dd><p>
+ The sample standard deviation.
+ </p></dd>
+<dt><span class="term">hint</span></dt>
+<dd><p>
+ A hint for the location to start looking for the result, a good choice
+ for this would be the sample size of a previous borderline Student's
+ t test.
+ </p></dd>
+</dl>
+</div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Remember that for a two-sided test, you must divide alpha by two before
+ calling this function.
+ </p></td></tr>
+</table></div>
+<p>
+ For more information on this function see the <a href="http://www.itl.nist.gov/div898/handbook/prc/section2/prc222.htm" target="_top">NIST
+ Engineering Statistics Handbook</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.students_t_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.students_t_dist.non_member_accessors"></a></span><a class="link" href="students_t_dist.html#math_toolkit.dist_ref.dists.students_t_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [-∞, +∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.students_t_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.students_t_dist.examples"></a></span><a class="link" href="students_t_dist.html#math_toolkit.dist_ref.dists.students_t_dist.examples">Examples</a>
+ </h5>
+<p>
+ Various <a class="link" href="../../stat_tut/weg/st_eg.html" title="Student's t Distribution Examples">worked examples</a>
+ are available illustrating the use of the Student's t distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.students_t_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.students_t_dist.accuracy"></a></span><a class="link" href="students_t_dist.html#math_toolkit.dist_ref.dists.students_t_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The normal distribution is implemented in terms of the <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">incomplete
+ beta function</a> and <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">its
+ inverses</a>, refer to accuracy data on those functions for more information.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.students_t_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.students_t_dist.implementation"></a></span><a class="link" href="students_t_dist.html#math_toolkit.dist_ref.dists.students_t_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table <span class="emphasis"><em>v</em></span> is the degrees of freedom
+ of the distribution, <span class="emphasis"><em>t</em></span> is the random variate, <span class="emphasis"><em>p</em></span>
+ is the probability and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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 the relation: pdf = (v / (v + t<sup>2</sup>))<sup>(1+v)/2 </sup> / (sqrt(v) *
+ <a class="link" href="../../sf_beta/beta_function.html" title="Beta">beta</a>(v/2,
+ 0.5))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relations:
+ </p>
+ <p>
+ p = 1 - z <span class="emphasis"><em>iff t > 0</em></span>
+ </p>
+ <p>
+ p = z <span class="emphasis"><em>otherwise</em></span>
+ </p>
+ <p>
+ where z is given by:
+ </p>
+ <p>
+ <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>(v
+ / 2, 0.5, v / (v + t<sup>2</sup>)) / 2 <span class="emphasis"><em>iff v < 2t<sup>2</sup></em></span>
+ </p>
+ <p>
+ <a class="link" href="../../sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>(0.5,
+ v / 2, t<sup>2 </sup> / (v + t<sup>2</sup>) / 2 <span class="emphasis"><em>otherwise</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = cdf(-t)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: t = sign(p - 0.5) * sqrt(v * y / x)
+ </p>
+ <p>
+ where:
+ </p>
+ <p>
+ x = <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>(v
+ / 2, 0.5, 2 * min(p, q))
+ </p>
+ <p>
+ y = 1 - x
+ </p>
+ <p>
+ The quantities <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>y</em></span>
+ are both returned by <a class="link" href="../../sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>
+ without the subtraction implied above.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: t = -quantile(q)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ if (v > 2) v / (v - 2) else NaN
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ if (v > 3) 0 else NaN
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ if (v > 4) 3 * (v - 2) / (v - 4) else NaN
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ if (v > 4) 6 / (df - 4) else NaN
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ If the moment index <span class="emphasis"><em>k</em></span> is less than <span class="emphasis"><em>v</em></span>,
+ then the moment is undefined. Evaluating the moment will throw a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ unless ignored by a policy, when it will return <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><>::</span><span class="identifier">quiet_NaN</span><span class="special">();</span></code>
+ </p>
+<p>
+ (For simplicity, we have not implemented the return of infinity in some
+ cases as suggested by <a href="http://en.wikipedia.org/wiki/Student%27s_t-distribution" target="_top">Wikipedia
+ Student's t</a>. See also https://svn.boost.org/trac/boost/ticket/7177.)
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="skew_normal_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="triangular_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/triangular_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/triangular_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,413 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Triangular Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="students_t_dist.html" title="Students t Distribution">
+<link rel="next" href="uniform_dist.html" title="Uniform Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="students_t_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="uniform_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_triangular_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.triangular_dist"></a><a class="link" href="triangular_dist.html" title="Triangular Distribution">Triangular
+ Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">triangular</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">triangular_distribution</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">triangular_distribution</span><span class="special"><></span> <span class="identifier">triangular</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">triangular_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="identifier">triangular_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">lower</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">mode</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span> <span class="identifier">RealType</span> <span class="identifier">upper</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span> <span class="comment">// Constructor.</span>
+ <span class="special">:</span> <span class="identifier">m_lower</span><span class="special">(</span><span class="identifier">lower</span><span class="special">),</span> <span class="identifier">m_mode</span><span class="special">(</span><span class="identifier">mode</span><span class="special">),</span> <span class="identifier">m_upper</span><span class="special">(</span><span class="identifier">upper</span><span class="special">)</span> <span class="comment">// Default is -1, 0, +1 triangular distribution.</span>
+ <span class="comment">// Accessor functions.</span>
+ <span class="identifier">RealType</span> <span class="identifier">lower</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">mode</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">upper</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span> <span class="comment">// class triangular_distribution</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Triangular_distribution" target="_top">triangular
+ distribution</a> is a continuous
+ <a href="http://en.wikipedia.org/wiki/Probability_distribution" target="_top">probability
+ distribution</a> with a lower limit a, <a href="http://en.wikipedia.org/wiki/Mode_%28statistics%29" target="_top">mode
+ c</a>, and upper limit b.
+ </p>
+<p>
+ The triangular distribution is often used where the distribution is only
+ vaguely known, but, like the <a href="http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29" target="_top">uniform
+ distribution</a>, upper and limits are 'known', but a 'best guess',
+ the mode or center point, is also added. It has been recommended as a
+ <a href="http://www.worldscibooks.com/mathematics/etextbook/5720/5720_chap1.pdf" target="_top">proxy
+ for the beta distribution.</a> The distribution is used in business
+ decision making and project planning.
+ </p>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Triangular_distribution" target="_top">triangular
+ distribution</a> is a distribution with the <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function</a>:
+ </p>
+<p>
+ f(x) =
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ 2(x-a)/(b-a) (c-a) for a <= x <= c
+ </li>
+<li class="listitem">
+ 2(b-x)/(b-a)(b-c) for c < x <= b
+ </li>
+</ul></div>
+<p>
+ Parameter a (lower) can be any finite value. Parameter b (upper) can be
+ any finite value > a (lower). Parameter c (mode) a <= c <= b.
+ This is the most probable value.
+ </p>
+<p>
+ The random variate
+ x must also be finite, and is supported lower <= x <= upper.
+ </p>
+<p>
+ The triangular distribution may be appropriate when an assumption of a
+ normal distribution is unjustified because uncertainty is caused by rounding
+ and quantization from analog to digital conversion. Upper and lower limits
+ are known, and the most probable value lies midway.
+ </p>
+<p>
+ The distribution simplifies when the 'best guess' is either the lower or
+ upper limit - a 90 degree angle triangle. The default chosen is the 001
+ triangular distribution which expresses an estimate that the lowest value
+ is the most likely; for example, you believe that the next-day quoted delivery
+ date is most likely (knowing that a quicker delivery is impossible - the
+ postman only comes once a day), and that longer delays are decreasingly
+ likely, and delivery is assumed to never take more than your upper limit.
+ </p>
+<p>
+ The following graph illustrates how the <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function PDF</a> varies with the various parameters:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/triangular_pdf.png" align="middle"></span>
+ </p>
+<p>
+ and cumulative distribution function
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/triangular_cdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.triangular_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.triangular_dist.member_functions"></a></span><a class="link" href="triangular_dist.html#math_toolkit.dist_ref.dists.triangular_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">triangular_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">lower</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">mode</span> <span class="special">=</span> <span class="number">0</span> <span class="identifier">RealType</span> <span class="identifier">upper</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a <a href="http://en.wikipedia.org/wiki/triangular_distribution" target="_top">triangular
+ distribution</a> with lower <span class="emphasis"><em>lower</em></span> (a) and upper
+ <span class="emphasis"><em>upper</em></span> (b).
+ </p>
+<p>
+ Requires that the <span class="emphasis"><em>lower</em></span>, <span class="emphasis"><em>mode</em></span>
+ and <span class="emphasis"><em>upper</em></span> parameters are all finite, otherwise calls
+ <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">lower</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the <span class="emphasis"><em>lower</em></span> parameter of this distribution (default
+ -1).
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">mode</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the <span class="emphasis"><em>mode</em></span> parameter of this distribution (default
+ 0).
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">upper</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the <span class="emphasis"><em>upper</em></span> parameter of this distribution (default+1).
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.triangular_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.triangular_dist.non_member_accessors"></a></span><a class="link" href="triangular_dist.html#math_toolkit.dist_ref.dists.triangular_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is \lowerto \upper, and the supported
+ range is lower <= x <= upper.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.triangular_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.triangular_dist.accuracy"></a></span><a class="link" href="triangular_dist.html#math_toolkit.dist_ref.dists.triangular_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The triangular distribution is implemented with simple arithmetic operators
+ and so should have errors within an epsilon or two, except quantiles with
+ arguments nearing the extremes of zero and unity.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.triangular_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.triangular_dist.implementation"></a></span><a class="link" href="triangular_dist.html#math_toolkit.dist_ref.dists.triangular_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table, a is the <span class="emphasis"><em>lower</em></span> parameter of
+ the distribution, c is the <span class="emphasis"><em>mode</em></span> parameter, b is the
+ <span class="emphasis"><em>upper</em></span> parameter, <span class="emphasis"><em>x</em></span> is the random
+ variate, <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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 the relation: pdf = 0 for x < mode, 2(x-a)/(b-a)(c-a)
+ else 2*(b-x)/((b-a)(b-c))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: cdf = 0 for x < mode (x-a)<sup>2</sup>/((b-a)(c-a))
+ else 1 - (b-x)<sup>2</sup>/((b-a)(b-c))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = 1 - p
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ let p0 = (c-a)/(b-a) the point of inflection on the cdf, then
+ given probability p and q = 1-p:
+ </p>
+ <p>
+ x = sqrt((b-a)(c-a)p) + a ; for p < p0
+ </p>
+ <p>
+ x = c ; for p == p0
+ </p>
+ <p>
+ x = b - sqrt((b-a)(b-c)q) ; for p > p0
+ </p>
+ <p>
+ (See /boost/math/distributions/triangular.hpp
+ for details.)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ As quantile (See /boost/math/distributions/triangular.hpp
+ for details.)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ (a + b + 3) / 3
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ (a<sup>2</sup>+b<sup>2</sup>+c<sup>2</sup> - ab - ac - bc)/18
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ c
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ (See /boost/math/distributions/triangular.hpp
+ for details).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 12/5
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ -3/5
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Some 'known good' test values were obtained from <a href="http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm" target="_top">Statlet:
+ Calculate and plot probability distributions</a>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.triangular_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.triangular_dist.references"></a></span><a class="link" href="triangular_dist.html#math_toolkit.dist_ref.dists.triangular_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/Triangular_distribution" target="_top">Wikpedia
+ triangular distribution</a>
+ </li>
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/TriangularDistribution.html" target="_top">Weisstein,
+ Eric W. "Triangular Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </li>
+<li class="listitem">
+ Evans, M.; Hastings, N.; and Peacock, B. "Triangular Distribution."
+ Ch. 40 in Statistical Distributions, 3rd ed. New York: Wiley, pp. 187-188,
+ 2000, ISBN - 0471371246.
+ </li>
+<li class="listitem">
+ <a href="http://www.brighton-webs.co.uk/distributions/triangular.asp" target="_top">Brighton
+ Webs Ltd. BW D-Calc 1.0 Distribution Calculator</a>
+ </li>
+<li class="listitem">
+ <a href="http://www.worldscibooks.com/mathematics/etextbook/5720/5720_chap1.pdf" target="_top">The
+ Triangular Distribution including its history.</a>
+ </li>
+<li class="listitem">
+ <a href="http://www.measurement.sk/2002/S1/Wimmer2.pdf" target="_top">Gejza Wimmer,
+ Viktor Witkovsky and Tomas Duby, Measurement Science Review, Volume
+ 2, Section 1, 2002, Proper Rounding Of The Measurement Results Under
+ The Assumption Of Triangular Distribution.</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="students_t_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="uniform_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/uniform_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/uniform_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,357 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Uniform Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="triangular_dist.html" title="Triangular Distribution">
+<link rel="next" href="weibull_dist.html" title="Weibull Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="triangular_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="weibull_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_uniform_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.uniform_dist"></a><a class="link" href="uniform_dist.html" title="Uniform Distribution">Uniform Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">uniform</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">uniform_distribution</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">uniform_distribution</span><span class="special"><></span> <span class="identifier">uniform</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">uniform_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="identifier">uniform_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">lower</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">upper</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span> <span class="comment">// Constructor.</span>
+ <span class="special">:</span> <span class="identifier">m_lower</span><span class="special">(</span><span class="identifier">lower</span><span class="special">),</span> <span class="identifier">m_upper</span><span class="special">(</span><span class="identifier">upper</span><span class="special">)</span> <span class="comment">// Default is standard uniform distribution.</span>
+ <span class="comment">// Accessor functions.</span>
+ <span class="identifier">RealType</span> <span class="identifier">lower</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">RealType</span> <span class="identifier">upper</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span> <span class="comment">// class uniform_distribution</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The uniform distribution, also known as a rectangular distribution, is
+ a probability distribution that has constant probability.
+ </p>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29" target="_top">continuous
+ uniform distribution</a> is a distribution with the <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function</a>:
+ </p>
+<p>
+ f(x) =
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ 1 / (upper - lower) for lower < x < upper
+ </li>
+<li class="listitem">
+ zero for x < lower or x > upper
+ </li>
+</ul></div>
+<p>
+ and in this implementation:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ 1 / (upper - lower) for x = lower or x = upper
+ </li></ul></div>
+<p>
+ The choice of x = lower or x = upper is made because statistical use of
+ this distribution judged is most likely: the method of maximum likelihood
+ uses this definition.
+ </p>
+<p>
+ There is also a discrete uniform distribution.
+ </p>
+<p>
+ Parameters lower and upper can be any finite value.
+ </p>
+<p>
+ The random variate
+ x must also be finite, and is supported lower <= x <= upper.
+ </p>
+<p>
+ The lower parameter is also called the <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm" target="_top">location
+ parameter</a>, <a href="http://en.wikipedia.org/wiki/Location_parameter" target="_top">that
+ is where the origin of a plot will lie</a>, and (upper - lower) is
+ also called the <a href="http://en.wikipedia.org/wiki/Scale_parameter" target="_top">scale
+ parameter</a>.
+ </p>
+<p>
+ The following graph illustrates how the <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function PDF</a> varies with the shape parameter:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/uniform_pdf.png" align="middle"></span>
+ </p>
+<p>
+ Likewise for the CDF:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/uniform_cdf.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.uniform_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.uniform_dist.member_functions"></a></span><a class="link" href="uniform_dist.html#math_toolkit.dist_ref.dists.uniform_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">uniform_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">lower</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">upper</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ Constructs a <a href="http://en.wikipedia.org/wiki/uniform_distribution" target="_top">uniform
+ distribution</a> with lower <span class="emphasis"><em>lower</em></span> (a) and upper
+ <span class="emphasis"><em>upper</em></span> (b).
+ </p>
+<p>
+ Requires that the <span class="emphasis"><em>lower</em></span> and <span class="emphasis"><em>upper</em></span>
+ parameters are both finite; otherwise if infinity or NaN then calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">lower</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the <span class="emphasis"><em>lower</em></span> parameter of this distribution.
+ </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">upper</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the <span class="emphasis"><em>upper</em></span> parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.uniform_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.uniform_dist.non_member_accessors"></a></span><a class="link" href="uniform_dist.html#math_toolkit.dist_ref.dists.uniform_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is any finite value, but the supported
+ range is only <span class="emphasis"><em>lower</em></span> <= x <= <span class="emphasis"><em>upper</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.uniform_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.uniform_dist.accuracy"></a></span><a class="link" href="uniform_dist.html#math_toolkit.dist_ref.dists.uniform_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The uniform distribution is implemented with simple arithmetic operators
+ and so should have errors within an epsilon or two.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.uniform_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.uniform_dist.implementation"></a></span><a class="link" href="uniform_dist.html#math_toolkit.dist_ref.dists.uniform_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table a is the <span class="emphasis"><em>lower</em></span> parameter of
+ the distribution, b is the <span class="emphasis"><em>upper</em></span> parameter, <span class="emphasis"><em>x</em></span>
+ is the random variate, <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q
+ = 1-p</em></span>.
+ </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 the relation: pdf = 0 for x < a, 1 / (b - a) for a <=
+ x <= b, 0 for x > b
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: cdf = 0 for x < a, (x - a) / (b - a) for
+ a <= x <= b, 1 for x > b
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = 1 - p, (b - x) / (b - a)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = p * (b - a) + a;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ x = -q * (b - a) + b
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ (a + b) / 2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ (b - a) <sup>2</sup> / 12
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ any value in [a, b] but a is chosen. (Would NaN be better?)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ -6/5 = -1.2 exactly. (kurtosis - 3)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ 9/5
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.uniform_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.uniform_dist.references"></a></span><a class="link" href="uniform_dist.html#math_toolkit.dist_ref.dists.uniform_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29" target="_top">Wikpedia
+ continuous uniform distribution</a>
+ </li>
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/UniformDistribution.html" target="_top">Weisstein,
+ Weisstein, Eric W. "Uniform Distribution." From MathWorld--A
+ Wolfram Web Resource.</a>
+ </li>
+<li class="listitem">
+ http://www.itl.nist.gov/div898/handbook/eda/section3/eda3662.htm
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="triangular_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="weibull_dist.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/weibull_dist.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/dists/weibull_dist.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,359 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Weibull Distribution</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../dists.html" title="Distributions">
+<link rel="prev" href="uniform_dist.html" title="Uniform Distribution">
+<link rel="next" href="../dist_algorithms.html" title="Distribution Algorithms">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="uniform_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../dist_algorithms.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_dists_weibull_dist">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.dist_ref.dists.weibull_dist"></a><a class="link" href="weibull_dist.html" title="Weibull Distribution">Weibull Distribution</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">weibull</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy<></a> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">weibull_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">weibull_distribution</span><span class="special"><></span> <span class="identifier">weibull</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">weibull_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">// Construct:</span>
+ <span class="identifier">weibull_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">shape</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="comment">// Accessors:</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="identifier">RealType</span> <span class="identifier">scale</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Weibull_distribution" target="_top">Weibull
+ distribution</a> is a continuous distribution with the <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
+ density function</a>:
+ </p>
+<p>
+ f(x; α, β) = (α/β) * (x / β)<sup>α - 1</sup> * e<sup>-(x/β)<sup>α</sup></sup>
+ </p>
+<p>
+ For shape parameter α   > 0, and scale parameter β   > 0, and x > 0.
+ </p>
+<p>
+ The Weibull distribution is often used in the field of failure analysis;
+ in particular it can mimic distributions where the failure rate varies
+ over time. If the failure rate is:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ constant over time, then α   = 1, suggests that items are failing from
+ random events.
+ </li>
+<li class="listitem">
+ decreases over time, then α   < 1, suggesting "infant mortality".
+ </li>
+<li class="listitem">
+ increases over time, then α   > 1, suggesting "wear out" -
+ more likely to fail as time goes by.
+ </li>
+</ul></div>
+<p>
+ The following graph illustrates how the PDF varies with the shape parameter
+ α:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/weibull_pdf1.png" align="middle"></span>
+ </p>
+<p>
+ While this graph illustrates how the PDF varies with the scale parameter
+ β:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/weibull_pdf2.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.weibull_dist.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.weibull_dist.related_distributions"></a></span><a class="link" href="weibull_dist.html#math_toolkit.dist_ref.dists.weibull_dist.related_distributions">Related
+ distributions</a>
+ </h5>
+<p>
+ When α   = 3, the <a href="http://en.wikipedia.org/wiki/Weibull_distribution" target="_top">Weibull
+ distribution</a> appears similar to the <a href="http://en.wikipedia.org/wiki/Normal_distribution" target="_top">normal
+ distribution</a>. When α   = 1, the Weibull distribution reduces to the
+ <a href="http://en.wikipedia.org/wiki/Exponential_distribution" target="_top">exponential
+ distribution</a>. The relationship of the types of extreme value distributions,
+ of which the Weibull is but one, is discussed by <a href="http://www.worldscibooks.com/mathematics/p191.html" target="_top">Extreme
+ Value Distributions, Theory and Applications Samuel Kotz & Saralees
+ Nadarajah</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.weibull_dist.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.weibull_dist.member_functions"></a></span><a class="link" href="weibull_dist.html#math_toolkit.dist_ref.dists.weibull_dist.member_functions">Member
+ Functions</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">weibull_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">shape</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>
+</pre>
+<p>
+ Constructs a <a href="http://en.wikipedia.org/wiki/Weibull_distribution" target="_top">Weibull
+ distribution</a> with shape <span class="emphasis"><em>shape</em></span> and scale <span class="emphasis"><em>scale</em></span>.
+ </p>
+<p>
+ Requires that the <span class="emphasis"><em>shape</em></span> and <span class="emphasis"><em>scale</em></span>
+ parameters are both greater than zero, otherwise calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </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 <span class="emphasis"><em>shape</em></span> parameter 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 <span class="emphasis"><em>scale</em></span> parameter of this distribution.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.weibull_dist.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.weibull_dist.non_member_accessors"></a></span><a class="link" href="weibull_dist.html#math_toolkit.dist_ref.dists.weibull_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_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </p>
+<p>
+ The domain of the random variable is [0, ∞].
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.weibull_dist.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.weibull_dist.accuracy"></a></span><a class="link" href="weibull_dist.html#math_toolkit.dist_ref.dists.weibull_dist.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The Weibull distribution is implemented in terms of the standard library
+ <code class="computeroutput"><span class="identifier">log</span></code> and <code class="computeroutput"><span class="identifier">exp</span></code>
+ functions plus <a class="link" href="../../powers/expm1.html" title="expm1">expm1</a> and
+ <a class="link" href="../../powers/log1p.html" title="log1p">log1p</a> and as such should
+ have very low error rates.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.dists.weibull_dist.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.weibull_dist.implementation"></a></span><a class="link" href="weibull_dist.html#math_toolkit.dist_ref.dists.weibull_dist.implementation">Implementation</a>
+ </h5>
+<p>
+ In the following table α   is the shape parameter of the distribution, β   is its
+ scale parameter, <span class="emphasis"><em>x</em></span> is the random variate, <span class="emphasis"><em>p</em></span>
+ is the probability and <span class="emphasis"><em>q = 1-p</em></span>.
+ </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 the relation: pdf = αβ<sup>-α </sup>x<sup>α - 1</sup> e<sup>-(x/beta)<sup>alpha</sup></sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: p = -<a class="link" href="../../powers/expm1.html" title="expm1">expm1</a>(-(x/β)<sup>α</sup>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: q = e<sup>-(x/β)<sup>α</sup></sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = β * (-<a class="link" href="../../powers/log1p.html" title="log1p">log1p</a>(-p))<sup>1/α</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+<td>
+ <p>
+ Using the relation: x = β * (-log(q))<sup>1/α</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mean
+ </p>
+ </td>
+<td>
+ <p>
+ β * Γ(1 + 1/α)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ variance
+ </p>
+ </td>
+<td>
+ <p>
+ β<sup>2</sup>(Γ(1 + 2/α) - Γ<sup>2</sup>(1 + 1/α))
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mode
+ </p>
+ </td>
+<td>
+ <p>
+ β((α - 1) / α)<sup>1/α</sup>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ skewness
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to <a href="http://mathworld.wolfram.com/WeibullDistribution.html" target="_top">Weisstein,
+ Eric W. "Weibull Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to <a href="http://mathworld.wolfram.com/WeibullDistribution.html" target="_top">Weisstein,
+ Eric W. "Weibull Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+<td>
+ <p>
+ Refer to <a href="http://mathworld.wolfram.com/WeibullDistribution.html" target="_top">Weisstein,
+ Eric W. "Weibull Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.dists.weibull_dist.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.dists.weibull_dist.references"></a></span><a class="link" href="weibull_dist.html#math_toolkit.dist_ref.dists.weibull_dist.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ http://en.wikipedia.org/wiki/Weibull_distribution
+ </li>
+<li class="listitem">
+ <a href="http://mathworld.wolfram.com/WeibullDistribution.html" target="_top">Weisstein,
+ Eric W. "Weibull Distribution." From MathWorld--A Wolfram
+ Web Resource.</a>
+ </li>
+<li class="listitem">
+ <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3668.htm" target="_top">Weibull
+ in NIST Exploratory Data Analysis</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="uniform_dist.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../dist_algorithms.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/nmp.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/dist_ref/nmp.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,696 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Non-Member Properties</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../dist_ref.html" title="Statistical Distributions Reference">
+<link rel="prev" href="../dist_ref.html" title="Statistical Distributions Reference">
+<link rel="next" href="dists.html" title="Distributions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../dist_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="dists.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_dist_ref_nmp">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.dist_ref.nmp"></a><a class="link" href="nmp.html" title="Non-Member Properties">Non-Member Properties</a>
+</h3></div></div></div>
+<p>
+ Properties that are common to all distributions are accessed via non-member
+ getter functions: non-membership allows more of these functions to be added
+ over time, as the need arises. Unfortunately the literature uses many different
+ and confusing names to refer to a rather small number of actual concepts;
+ refer to the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.concept_index">concept
+ index</a> to find the property you want by the name you are most familiar
+ with. Or use the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.function_index">function
+ index</a> to go straight to the function you want if you already know
+ its name.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h0"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.function_index"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.function_index">Function
+ Index</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution
+ Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.ccdf">Complement of the Cumulative
+ Distribution Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.median">median</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.range">range</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile_c">Quantile from the
+ complement of the probability</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h1"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.concept_index"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.concept_index">Conceptual
+ Index</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.ccdf">Complement of the Cumulative
+ Distribution Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution
+ Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf_inv">Inverse Cumulative
+ Distribution Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.survival_inv">Inverse Survival
+ Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.lower_critical">Lower Critical
+ Value</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.median">median</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdfPQ">P</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.percent">Percent Point Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.pmf">Probability Mass Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.range">range</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdfPQ">Q</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile_c">Quantile from the
+ complement of the probability</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.survival">Survival Function</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.upper_critical">Upper Critical
+ Value</a>.
+ </li>
+<li class="listitem">
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h2"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.cdf"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative
+ Distribution Function</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">cdf</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ The <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution
+ Function</a> is the probability that the variable takes a value less than
+ or equal to x. It is equivalent to the integral from -infinity to x of the
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the random variable is outside the defined range for the distribution.
+ </p>
+<p>
+ For example, the following graph shows the cdf for the normal distribution:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/cdf.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h3"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.ccdf"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.ccdf">Complement
+ of the Cumulative Distribution Function</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Distribution</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">cdf</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Unspecified-Complement-Type</em></span><span class="special"><</span><span class="identifier">Distribution</span><span class="special">,</span> <span class="identifier">RealType</span><span class="special">>&</span> <span class="identifier">comp</span><span class="special">);</span>
+</pre>
+<p>
+ The complement of the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative
+ Distribution Function</a> is the probability that the variable takes a
+ value greater than x. It is equivalent to the integral from x to infinity
+ of the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density
+ Function</a>, or 1 minus the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative
+ Distribution Function</a> of x.
+ </p>
+<p>
+ This is also known as the survival function.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the random variable is outside the defined range for the distribution.
+ </p>
+<p>
+ In this library, it is obtained by wrapping the arguments to the <code class="computeroutput"><span class="identifier">cdf</span></code> function in a call to <code class="computeroutput"><span class="identifier">complement</span></code>, for example:
+ </p>
+<pre class="programlisting"><span class="comment">// standard normal distribution object:</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal</span> <span class="identifier">norm</span><span class="special">;</span>
+<span class="comment">// print survival function for x=2.0:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">norm</span><span class="special">,</span> <span class="number">2.0</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ For example, the following graph shows the __complement of the cdf for the
+ normal distribution:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/survival.png"></span>
+ </p>
+<p>
+ See <a class="link" href="../stat_tut/overview/complements.html#why_complements">why complements?</a> for why the complement
+ is useful and when it should be used.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h4"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.hazard"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard
+ Function</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">hazard</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>
+ of <span class="emphasis"><em>x</em></span> and distibution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the random variable is outside the defined range for the distribution.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/hazard.png"></span>
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Some authors refer to this as the conditional failure density function
+ rather than the hazard function.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h5"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.chf"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative
+ Hazard Function</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">chf</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard
+ Function</a> of <span class="emphasis"><em>x</em></span> and distibution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the random variable is outside the defined range for the distribution.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/chf.png"></span>
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Some authors refer to this as simply the "Hazard Function".
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h6"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.mean"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">mean</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the mean of the distribution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the distribution does not have a defined mean (for example the Cauchy
+ distribution).
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h7"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.median"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.median">median</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">median</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the median of the distribution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h8"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.mode"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">mode</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the mode of the distribution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the distribution does not have a defined mode.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h9"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.pdf"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability
+ Density Function</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">pdf</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ For a continuous function, the probability density function (pdf) returns
+ the probability that the variate has the value x. Since for continuous distributions
+ the probability at a single point is actually zero, the probability is better
+ expressed as the integral of the pdf between two points: see the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative
+ Distribution Function</a>.
+ </p>
+<p>
+ For a discrete distribution, the pdf is the probability that the variate
+ takes the value x.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the random variable is outside the defined range for the distribution.
+ </p>
+<p>
+ For example, for a standard normal distribution the pdf looks like this:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/pdf.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h10"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.range"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.range">Range</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <span class="identifier">RealType</span><span class="special">></span> <span class="identifier">range</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the valid range of the random variable over distribution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h11"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.quantile"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">quantile</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ The quantile is best viewed as the inverse of the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative
+ Distribution Function</a>, it returns a value <span class="emphasis"><em>x</em></span> such
+ that <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span>
+ <span class="identifier">p</span></code>.
+ </p>
+<p>
+ This is also known as the <span class="emphasis"><em>percent point function</em></span>, or
+ <span class="emphasis"><em>percentile</em></span>, or <span class="emphasis"><em>fractile</em></span>, it is
+ also the same as calculating the <span class="emphasis"><em>lower critical value</em></span>
+ of a distribution.
+ </p>
+<p>
+ This function returns a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the probability lies outside [0,1]. The function may return an <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ if there is no finite value that has the specified probability.
+ </p>
+<p>
+ The following graph shows the quantile function for a standard normal distribution:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/quantile.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h12"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.quantile_c"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile_c">Quantile
+ from the complement of the probability.</a>
+ </h5>
+<p>
+ See also <a class="link" href="../stat_tut/overview/complements.html" title="Complements are supported too - and when to use them">complements</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Distribution</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">quantile</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Unspecified-Complement-Type</em></span><span class="special"><</span><span class="identifier">Distribution</span><span class="special">,</span> <span class="identifier">RealType</span><span class="special">>&</span> <span class="identifier">comp</span><span class="special">);</span>
+</pre>
+<p>
+ This is the inverse of the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.ccdf">Complement
+ of the Cumulative Distribution Function</a>. It is calculated by wrapping
+ the arguments in a call to the quantile function in a call to <span class="emphasis"><em>complement</em></span>.
+ For example:
+ </p>
+<pre class="programlisting"><span class="comment">// define a standard normal distribution:</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal</span> <span class="identifier">norm</span><span class="special">;</span>
+<span class="comment">// print the value of x for which the complement</span>
+<span class="comment">// of the probability is 0.05:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">norm</span><span class="special">,</span> <span class="number">0.05</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ The function computes a value <span class="emphasis"><em>x</em></span> such that <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span>
+ <span class="identifier">x</span><span class="special">))</span> <span class="special">==</span> <span class="identifier">q</span></code> where
+ <span class="emphasis"><em>q</em></span> is complement of the probability.
+ </p>
+<p>
+ <a class="link" href="../stat_tut/overview/complements.html#why_complements">Why complements?</a>
+ </p>
+<p>
+ This function is also called the inverse survival function, and is the same
+ as calculating the <span class="emphasis"><em>upper critical value</em></span> of a distribution.
+ </p>
+<p>
+ This function returns a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the probablity lies outside [0,1]. The function may return an <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ if there is no finite value that has the specified probability.
+ </p>
+<p>
+ The following graph show the inverse survival function for the normal distribution:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/survival_inv.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h13"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.sd"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.sd">Standard
+ Deviation</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">standard_deviation</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the standard deviation of distribution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the distribution does not have a defined standard deviation.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h14"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.support"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.support">support</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <span class="identifier">RealType</span><span class="special">></span> <span class="identifier">support</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the supported range of random variable over the distribution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ The distribution is said to be 'supported' over a range that is <a href="http://en.wikipedia.org/wiki/Probability_distribution" target="_top">"the
+ smallest closed set whose complement has probability zero"</a>.
+ Non-mathematicians might say it means the 'interesting' smallest range of
+ random variate x that has the cdf going from zero to unity. Outside are uninteresting
+ zones where the pdf is zero, and the cdf zero or unity.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h15"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.variance"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.variance">Variance</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">variance</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the variance of the distribution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the distribution does not have a defined variance.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h16"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.skewness"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.skewness">Skewness</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">skewness</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the skewness of the distribution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the distribution does not have a defined skewness.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h17"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.kurtosis"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.kurtosis">Kurtosis</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">kurtosis</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the 'proper' kurtosis (normalized fourth moment) of the distribution
+ <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ kertosis = β<sub>2</sub>  = μ<sub>4</sub>   / μ<sub>2</sub><sup>2</sup>
+ </p>
+<p>
+ Where μ<sub>i</sub>   is the i'th central moment of the distribution, and in particular
+ μ<sub>2</sub>   is the variance of the distribution.
+ </p>
+<p>
+ The kurtosis is a measure of the "peakedness" of a distribution.
+ </p>
+<p>
+ Note that the literature definition of kurtosis is confusing. The definition
+ used here is that used by for example <a href="http://mathworld.wolfram.com/Kurtosis.html" target="_top">Wolfram
+ MathWorld</a> (that includes a table of formulae for kurtosis excess
+ for various distributions) but NOT the definition of <a href="http://en.wikipedia.org/wiki/Kurtosis" target="_top">kurtosis
+ used by Wikipedia</a> which treats "kurtosis" and "kurtosis
+ excess" as the same quantity.
+ </p>
+<pre class="programlisting"><span class="identifier">kurtosis_excess</span> <span class="special">=</span> <span class="char">'proper'</span> <span class="identifier">kurtosis</span> <span class="special">-</span> <span class="number">3</span>
+</pre>
+<p>
+ This subtraction of 3 is convenient so that the <span class="emphasis"><em>kurtosis excess</em></span>
+ of a normal distribution is zero.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the distribution does not have a defined kurtosis.
+ </p>
+<p>
+ 'Proper' kurtosis can have a value from zero to + infinity.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h18"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.kurtosis_excess"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">Kurtosis
+ excess</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">kurtosis_excess</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>Distribution-Type</em></span><span class="special"><</span><span class="identifier">RealType</span><span class="special">,</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">>&</span> <span class="identifier">dist</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the kurtosis excess of the distribution <span class="emphasis"><em>dist</em></span>.
+ </p>
+<p>
+ kurtosis excess = γ<sub>2</sub>  = μ<sub>4</sub>   / μ<sub>2</sub><sup>2</sup>  - 3 = kurtosis - 3
+ </p>
+<p>
+ Where μ<sub>i</sub>   is the i'th central moment of the distribution, and in particular
+ μ<sub>2</sub>   is the variance of the distribution.
+ </p>
+<p>
+ The kurtosis excess is a measure of the "peakedness" of a distribution,
+ and is more widely used than the "kurtosis proper". It is defined
+ so that the kurtosis excess of a normal distribution is zero.
+ </p>
+<p>
+ This function may return a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ if the distribution does not have a defined kurtosis excess.
+ </p>
+<p>
+ Kurtosis excess can have a value from -2 to + infinity.
+ </p>
+<pre class="programlisting"><span class="identifier">kurtosis</span> <span class="special">=</span> <span class="identifier">kurtosis_excess</span> <span class="special">+</span><span class="number">3</span><span class="special">;</span>
+</pre>
+<p>
+ The kurtosis excess of a normal distribution is zero.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h19"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.cdfPQ"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdfPQ">P
+ and Q</a>
+ </h5>
+<p>
+ The terms P and Q are sometimes used to refer to the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative
+ Distribution Function</a> and its <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.ccdf">complement</a>
+ respectively. Lowercase p and q are sometimes used to refer to the values
+ returned by these functions.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h20"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.percent"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.percent">Percent
+ Point Function or Percentile</a>
+ </h5>
+<p>
+ The percent point function, also known as the percentile, is the same as
+ the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h21"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.cdf_inv"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.cdf_inv">Inverse
+ CDF Function.</a>
+ </h5>
+<p>
+ The inverse of the cumulative distribution function, is the same as the
+ <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h22"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.survival_inv"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.survival_inv">Inverse
+ Survival Function.</a>
+ </h5>
+<p>
+ The inverse of the survival function, is the same as computing the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile_c">quantile from the complement
+ of the probability</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h23"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.pmf"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.pmf">Probability
+ Mass Function</a>
+ </h5>
+<p>
+ The Probability Mass Function is the same as the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability
+ Density Function</a>.
+ </p>
+<p>
+ The term Mass Function is usually applied to discrete distributions, while
+ the term <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density
+ Function</a> applies to continuous distributions.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h24"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.lower_critical"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.lower_critical">Lower
+ Critical Value.</a>
+ </h5>
+<p>
+ The lower critical value calculates the value of the random variable given
+ the area under the left tail of the distribution. It is equivalent to calculating
+ the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h25"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.upper_critical"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.upper_critical">Upper
+ Critical Value.</a>
+ </h5>
+<p>
+ The upper critical value calculates the value of the random variable given
+ the area under the right tail of the distribution. It is equivalent to calculating
+ the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.quantile_c">quantile from the
+ complement of the probability</a>.
+ </p>
+<h5>
+<a name="math_toolkit.dist_ref.nmp.h26"></a>
+ <span class="phrase"><a name="math_toolkit.dist_ref.nmp.survival"></a></span><a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.survival">Survival
+ Function</a>
+ </h5>
+<p>
+ Refer to the <a class="link" href="nmp.html#math_toolkit.dist_ref.nmp.ccdf">Complement of
+ the Cumulative Distribution Function</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../dist_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="dists.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/ellint.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/ellint.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Elliptic Integrals</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="airy/bip.html" title="Airy Bi' Function">
+<link rel="next" href="ellint/ellint_intro.html" title="Elliptic Integral Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="airy/bip.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="ellint/ellint_intro.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_ellint">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.ellint"></a><a class="link" href="ellint.html" title="Elliptic Integrals">Elliptic Integrals</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Elliptic Integral Overview</span></dt>
+<dt><span class="section"><a href="ellint/ellint_carlson.html">Elliptic Integrals
+ - Carlson Form</a></span></dt>
+<dt><span class="section"><a href="ellint/ellint_1.html">Elliptic Integrals of the
+ First Kind - Legendre Form</a></span></dt>
+<dt><span class="section"><a href="ellint/ellint_2.html">Elliptic Integrals of the
+ Second Kind - Legendre Form</a></span></dt>
+<dt><span class="section"><a href="ellint/ellint_3.html">Elliptic Integrals of the
+ Third Kind - Legendre Form</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="airy/bip.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="ellint/ellint_intro.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,258 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Elliptic Integrals of the First Kind - Legendre Form</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../ellint.html" title="Elliptic Integrals">
+<link rel="prev" href="ellint_carlson.html" title="Elliptic Integrals - Carlson Form">
+<link rel="next" href="ellint_2.html" title="Elliptic Integrals of the Second Kind - Legendre Form">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ellint_carlson.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ellint_2.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_ellint_ellint_1">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.ellint.ellint_1"></a><a class="link" href="ellint_1.html" title="Elliptic Integrals of the First Kind - Legendre Form">Elliptic Integrals of the
+ First Kind - Legendre Form</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.ellint.ellint_1.h0"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_1.synopsis"></a></span><a class="link" href="ellint_1.html#math_toolkit.ellint.ellint_1.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">ellint_1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.ellint.ellint_1.h1"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_1.description"></a></span><a class="link" href="ellint_1.html#math_toolkit.ellint.ellint_1.description">Description</a>
+ </h5>
+<p>
+ These two functions evaluate the incomplete elliptic integral of the first
+ kind <span class="emphasis"><em>F(φ, k)</em></span> and its complete counterpart <span class="emphasis"><em>K(k)
+ = F(π/2, k)</em></span>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/ellint_1.png" align="middle"></span>
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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:
+ when they are the same type then the result is the same type as the arguments.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the incomplete elliptic integral of the first kind <span class="emphasis"><em>F(φ,
+ k)</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint2.png"></span>
+ </p>
+<p>
+ Requires -1 <= k <= 1, otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the complete elliptic integral of the first kind <span class="emphasis"><em>K(k)</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint6.png"></span>
+ </p>
+<p>
+ Requires -1 <= k <= 1, otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_1.h2"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_1.accuracy"></a></span><a class="link" href="ellint_1.html#math_toolkit.ellint.ellint_1.accuracy">Accuracy</a>
+ </h5>
+<p>
+ These functions are computed using only basic arithmetic operations, so there
+ isn't much variation in accuracy over differing platforms. Note that only
+ results for the widest floating point type on the system are given as narrower
+ types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>. All values are relative errors in units of epsilon.
+ </p>
+<div class="table">
+<a name="math_toolkit.ellint.ellint_1.errors_rates_in_the_elliptic_int"></a><p class="title"><b>Table 3.26. Errors Rates in the Elliptic Integrals of the First Kind</b></p>
+<div class="table-contents"><table class="table" summary="Errors Rates in the Elliptic Integrals of the First Kind">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ F(φ, k)
+ </p>
+ </th>
+<th>
+ <p>
+ K(k)
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 / Visual C++ 8.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3 Mean=0.8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.8 Mean=0.7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux / G++ 3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.6 Mean=1.7
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.2 Mean=1.8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HP-UX / HP aCC 6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.6 Mean=1.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.7 Mean=1.5
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.ellint.ellint_1.h3"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_1.testing"></a></span><a class="link" href="ellint_1.html#math_toolkit.ellint.ellint_1.testing">Testing</a>
+ </h5>
+<p>
+ The tests use a mixture of spot test values calculated using the online calculator
+ at functions.wolfram.com,
+ and random test data generated using NTL::RR at 1000-bit precision and this
+ implementation.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_1.h4"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_1.implementation"></a></span><a class="link" href="ellint_1.html#math_toolkit.ellint.ellint_1.implementation">Implementation</a>
+ </h5>
+<p>
+ These functions are implemented in terms of Carlson's integrals using the
+ relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint19.png"></span>
+ </p>
+<p>
+ and
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint20.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="ellint_carlson.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ellint_2.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_2.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_2.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,258 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Elliptic Integrals of the Second Kind - Legendre Form</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../ellint.html" title="Elliptic Integrals">
+<link rel="prev" href="ellint_1.html" title="Elliptic Integrals of the First Kind - Legendre Form">
+<link rel="next" href="ellint_3.html" title="Elliptic Integrals of the Third Kind - Legendre Form">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ellint_1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ellint_3.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_ellint_ellint_2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.ellint.ellint_2"></a><a class="link" href="ellint_2.html" title="Elliptic Integrals of the Second Kind - Legendre Form">Elliptic Integrals of the
+ Second Kind - Legendre Form</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.ellint.ellint_2.h0"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_2.synopsis"></a></span><a class="link" href="ellint_2.html#math_toolkit.ellint.ellint_2.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">ellint_2</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_2</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_2</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_2</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_2</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.ellint.ellint_2.h1"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_2.description"></a></span><a class="link" href="ellint_2.html#math_toolkit.ellint.ellint_2.description">Description</a>
+ </h5>
+<p>
+ These two functions evaluate the incomplete elliptic integral of the second
+ kind <span class="emphasis"><em>E(φ, k)</em></span> and its complete counterpart <span class="emphasis"><em>E(k)
+ = E(π/2, k)</em></span>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/ellint_2.png" align="middle"></span>
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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:
+ when they are the same type then the result is the same type as the arguments.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_2</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_2</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the incomplete elliptic integral of the second kind <span class="emphasis"><em>E(φ,
+ k)</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint3.png"></span>
+ </p>
+<p>
+ Requires -1 <= k <= 1, otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_2</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_2</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the complete elliptic integral of the second kind <span class="emphasis"><em>E(k)</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint7.png"></span>
+ </p>
+<p>
+ Requires -1 <= k <= 1, otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_2.h2"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_2.accuracy"></a></span><a class="link" href="ellint_2.html#math_toolkit.ellint.ellint_2.accuracy">Accuracy</a>
+ </h5>
+<p>
+ These functions are computed using only basic arithmetic operations, so there
+ isn't much variation in accuracy over differing platforms. Note that only
+ results for the widest floating point type on the system are given as narrower
+ types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>. All values are relative errors in units of epsilon.
+ </p>
+<div class="table">
+<a name="math_toolkit.ellint.ellint_2.errors_rates_in_the_elliptic_int"></a><p class="title"><b>Table 3.27. Errors Rates in the Elliptic Integrals of the Second Kind</b></p>
+<div class="table-contents"><table class="table" summary="Errors Rates in the Elliptic Integrals of the Second Kind">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ F(φ, k)
+ </p>
+ </th>
+<th>
+ <p>
+ K(k)
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 / Visual C++ 8.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.6 Mean=1.2
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.5 Mean=1.0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux / G++ 3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.3 Mean=1.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.6 Mean=1.2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HP-UX / HP aCC 6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5.8 Mean=2.2
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=10.8 Mean=2.3
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.ellint.ellint_2.h3"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_2.testing"></a></span><a class="link" href="ellint_2.html#math_toolkit.ellint.ellint_2.testing">Testing</a>
+ </h5>
+<p>
+ The tests use a mixture of spot test values calculated using the online calculator
+ at functions.wolfram.com,
+ and random test data generated using NTL::RR at 1000-bit precision and this
+ implementation.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_2.h4"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_2.implementation"></a></span><a class="link" href="ellint_2.html#math_toolkit.ellint.ellint_2.implementation">Implementation</a>
+ </h5>
+<p>
+ These functions are implemented in terms of Carlson's integrals using the
+ relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint21.png"></span>
+ </p>
+<p>
+ and
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint22.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="ellint_1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ellint_3.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_3.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_3.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,311 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Elliptic Integrals of the Third Kind - Legendre Form</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../ellint.html" title="Elliptic Integrals">
+<link rel="prev" href="ellint_2.html" title="Elliptic Integrals of the Second Kind - Legendre Form">
+<link rel="next" href="../jacobi.html" title="Jacobi Elliptic Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ellint_2.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../jacobi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_ellint_ellint_3">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.ellint.ellint_3"></a><a class="link" href="ellint_3.html" title="Elliptic Integrals of the Third Kind - Legendre Form">Elliptic Integrals of the
+ Third Kind - Legendre Form</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.ellint.ellint_3.h0"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_3.synopsis"></a></span><a class="link" href="ellint_3.html#math_toolkit.ellint.ellint_3.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">ellint_3</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_3</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_3</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_3</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">n</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_3</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.ellint.ellint_3.h1"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_3.description"></a></span><a class="link" href="ellint_3.html#math_toolkit.ellint.ellint_3.description">Description</a>
+ </h5>
+<p>
+ These two functions evaluate the incomplete elliptic integral of the third
+ kind <span class="emphasis"><em>Π(n, φ, k)</em></span> and its complete counterpart <span class="emphasis"><em>Π(n,
+ k) = E(n, π/2, k)</em></span>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/ellint_3.png" align="middle"></span>
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a> when the arguments are of different
+ types: when they are the same type then the result is the same type as the
+ arguments.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_3</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_3</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the incomplete elliptic integral of the third kind <span class="emphasis"><em>Π(n,
+ φ, k)</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint4.png"></span>
+ </p>
+<p>
+ Requires <span class="emphasis"><em>-1 <= k <= 1</em></span> and <span class="emphasis"><em>n < 1/sin<sup>2</sup>(φ)</em></span>,
+ otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ (outside this range the result would be complex).
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_3</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">n</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_3</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the complete elliptic integral of the first kind <span class="emphasis"><em>Π(n, k)</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint8.png"></span>
+ </p>
+<p>
+ Requires <span class="emphasis"><em>-1 <= k <= 1</em></span> and <span class="emphasis"><em>n < 1</em></span>,
+ otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ (outside this range the result would be complex).
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_3.h2"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_3.accuracy"></a></span><a class="link" href="ellint_3.html#math_toolkit.ellint.ellint_3.accuracy">Accuracy</a>
+ </h5>
+<p>
+ These functions are computed using only basic arithmetic operations, so there
+ isn't much variation in accuracy over differing platforms. Note that only
+ results for the widest floating point type on the system are given as narrower
+ types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>. All values are relative errors in units of epsilon.
+ </p>
+<div class="table">
+<a name="math_toolkit.ellint.ellint_3.errors_rates_in_the_elliptic_int"></a><p class="title"><b>Table 3.28. Errors Rates in the Elliptic Integrals of the Third Kind</b></p>
+<div class="table-contents"><table class="table" summary="Errors Rates in the Elliptic Integrals of the Third Kind">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Π(n, φ, k)
+ </p>
+ </th>
+<th>
+ <p>
+ Π(n, k)
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 / Visual C++ 8.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=29 Mean=2.2
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3 Mean=0.8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux / G++ 3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=14 Mean=1.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.3 Mean=0.8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HP-UX / HP aCC 6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=10 Mean=1.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.2 Mean=1.1
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.ellint.ellint_3.h3"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_3.testing"></a></span><a class="link" href="ellint_3.html#math_toolkit.ellint.ellint_3.testing">Testing</a>
+ </h5>
+<p>
+ The tests use a mixture of spot test values calculated using the online calculator
+ at functions.wolfram.com,
+ and random test data generated using NTL::RR at 1000-bit precision and this
+ implementation.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_3.h4"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_3.implementation"></a></span><a class="link" href="ellint_3.html#math_toolkit.ellint.ellint_3.implementation">Implementation</a>
+ </h5>
+<p>
+ The implementation for Π(n, φ, k) first siphons off the special cases:
+ </p>
+<p>
+ <span class="emphasis"><em>Π(0, φ, k) = F(φ, k)</em></span>
+ </p>
+<p>
+ <span class="emphasis"><em>Π(n, π/2, k) = Π(n, k)</em></span>
+ </p>
+<p>
+ and
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint23.png"></span>
+ </p>
+<p>
+ Then if n < 0 the relations (A&S 17.7.15/16):
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint24.png"></span>
+ </p>
+<p>
+ are used to shift <span class="emphasis"><em>n</em></span> to the range [0, 1].
+ </p>
+<p>
+ Then the relations:
+ </p>
+<p>
+ <span class="emphasis"><em>Π(n, -φ, k) = -Π(n, φ, k)</em></span>
+ </p>
+<p>
+ <span class="emphasis"><em>Π(n, φ+mπ, k) = Π(n, φ, k) + 2mΠ(n, k) ; n <= 1</em></span>
+ </p>
+<p>
+ <span class="emphasis"><em>Π(n, φ+mπ, k) = Π(n, φ, k) ; n > 1</em></span> [1]
+ </p>
+<p>
+ are used to move φ   to the range [0, π/2].
+ </p>
+<p>
+ The functions are then implemented in terms of Carlson's integrals using
+ the relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint25.png"></span>
+ </p>
+<p>
+ and
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint26.png"></span>
+ </p>
+<div class="footnotes">
+<br><hr style="width:100; text-align:left;margin-left: 0">
+<div id="ftn.math_toolkit.ellint.ellint_3.f0" class="footnote"><p>[1]
+ I haven't been able to find a literature reference for this relation, but
+ it appears to be the convention used by Mathematica. Intuitively the first
+ <span class="emphasis"><em>2 * m * Π(n, k)</em></span> terms cancel out as the derivative
+ alternates between +∞ and -∞.
+ </p></div>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="ellint_2.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../jacobi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_carlson.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_carlson.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,421 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Elliptic Integrals - Carlson Form</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../ellint.html" title="Elliptic Integrals">
+<link rel="prev" href="ellint_intro.html" title="Elliptic Integral Overview">
+<link rel="next" href="ellint_1.html" title="Elliptic Integrals of the First Kind - Legendre Form">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ellint_intro.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ellint_1.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_ellint_ellint_carlson">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.ellint.ellint_carlson"></a><a class="link" href="ellint_carlson.html" title="Elliptic Integrals - Carlson Form">Elliptic Integrals
+ - Carlson Form</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.ellint.ellint_carlson.h0"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.synopsis"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">ellint_rf</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rf</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rf</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&)</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">ellint_rd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rd</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rd</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&)</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">ellint_rj</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rj</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">T4</span> <span class="identifier">p</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rj</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">T4</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&)</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">ellint_rc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rc</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rc</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&)</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.ellint.ellint_carlson.h1"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.description"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.description">Description</a>
+ </h5>
+<p>
+ These functions return Carlson's symmetrical elliptic integrals, the functions
+ have complicated behavior over all their possible domains, but the following
+ graph gives an idea of their behavior:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/ellint_carlson.png" align="middle"></span>
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a> when the arguments are of different
+ types: otherwise the return is the same type as the arguments.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rf</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rf</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&)</span>
+</pre>
+<p>
+ Returns Carlson's Elliptic Integral R<sub>F</sub>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint9.png"></span>
+ </p>
+<p>
+ Requires that all of the arguments are non-negative, and at most one may
+ be zero. Otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rd</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rd</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&)</span>
+</pre>
+<p>
+ Returns Carlson's elliptic integral R<sub>D</sub>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint10.png"></span>
+ </p>
+<p>
+ Requires that x and y are non-negative, with at most one of them zero, and
+ that z >= 0. Otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rj</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">T4</span> <span class="identifier">p</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rj</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">T4</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&)</span>
+</pre>
+<p>
+ Returns Carlson's elliptic integral R<sub>J</sub>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint11.png"></span>
+ </p>
+<p>
+ Requires that x, y and z are non-negative, with at most one of them zero,
+ and that <span class="emphasis"><em>p != 0</em></span>. Otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ When <span class="emphasis"><em>p < 0</em></span> the function returns the <a href="http://en.wikipedia.org/wiki/Cauchy_principal_value" target="_top">Cauchy
+ principal value</a> using the relation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint17.png"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rc</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ellint_rc</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&)</span>
+</pre>
+<p>
+ Returns Carlson's elliptic integral R<sub>C</sub>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint12.png"></span>
+ </p>
+<p>
+ Requires that <span class="emphasis"><em>x > 0</em></span> and that <span class="emphasis"><em>y != 0</em></span>.
+ Otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ When <span class="emphasis"><em>y < 0</em></span> the function returns the <a href="http://mathworld.wolfram.com/CauchyPrincipalValue.html" target="_top">Cauchy
+ principal value</a> using the relation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint18.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_carlson.h2"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.testing"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of tests.
+ </p>
+<p>
+ Spot tests compare selected values with test data given in:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ B. C. Carlson, <span class="emphasis"><em><a href="http://arxiv.org/abs/math.CA/9409227" target="_top">Numerical
+ computation of real or complex elliptic integrals</a></em></span>. Numerical
+ Algorithms, Volume 10, Number 1 / March, 1995, pp 13-26.
+ </p></blockquote></div>
+<p>
+ Random test data generated using NTL::RR at 1000-bit precision and our implementation
+ checks for rounding-errors and/or regressions.
+ </p>
+<p>
+ There are also sanity checks that use the inter-relations between the integrals
+ to verify their correctness: see the above Carlson paper for details.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_carlson.h3"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.accuracy"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.accuracy">Accuracy</a>
+ </h5>
+<p>
+ These functions are computed using only basic arithmetic operations, so there
+ isn't much variation in accuracy over differing platforms. Note that only
+ results for the widest floating-point type on the system are given as narrower
+ types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>. All values are relative errors in units of epsilon.
+ </p>
+<div class="table">
+<a name="math_toolkit.ellint.ellint_carlson.errors_rates_in_the_carlson_elli"></a><p class="title"><b>Table 3.25. Errors Rates in the Carlson Elliptic Integrals</b></p>
+<div class="table-contents"><table class="table" summary="Errors Rates in the Carlson Elliptic Integrals">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ R<sub>F</sub>
+ </p>
+ </th>
+<th>
+ <p>
+ R<sub>D</sub>
+ </p>
+ </th>
+<th>
+ <p>
+ R<sub>J</sub>
+ </p>
+ </th>
+<th>
+ <p>
+ R<sub>C</sub>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 / Visual C++ 8.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.9 Mean=0.75
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.6 Mean=0.9
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=108 Mean=6.9
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.4 Mean=0.6
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux / G++ 3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.5 Mean=0.75
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.7 Mean=0.9
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=105 Mean=8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.9 Mean=0.7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HP-UX / HP aCC 6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5.3 Mean=1.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.9 Mean=0.99
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=180 Mean=12
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.8 Mean=0.7
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.ellint.ellint_carlson.h4"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.implementation"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.implementation">Implementation</a>
+ </h5>
+<p>
+ The key of Carlson's algorithm [<a class="link" href="ellint_intro.html#ellint_ref_carlson79">Carlson79</a>]
+ is the duplication theorem:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint13.png"></span>
+ </p>
+<p>
+ By applying it repeatedly, <span class="emphasis"><em>x</em></span>, <span class="emphasis"><em>y</em></span>,
+ <span class="emphasis"><em>z</em></span> get closer and closer. When they are nearly equal,
+ the special case equation
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint16.png"></span>
+ </p>
+<p>
+ is used. More specifically, <span class="emphasis"><em>[R F]</em></span> is evaluated from
+ a Taylor series expansion to the fifth order. The calculations of the other
+ three integrals are analogous.
+ </p>
+<p>
+ For <span class="emphasis"><em>p < 0</em></span> in <span class="emphasis"><em>R<sub>J</sub>(x, y, z, p)</em></span>
+ and <span class="emphasis"><em>y < 0</em></span> in <span class="emphasis"><em>R<sub>C</sub>(x, y)</em></span>, the integrals
+ are singular and their <a href="http://mathworld.wolfram.com/CauchyPrincipalValue.html" target="_top">Cauchy
+ principal values</a> are returned via the relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint17.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint18.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="ellint_intro.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ellint_1.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_intro.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/ellint/ellint_intro.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,396 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Elliptic Integral Overview</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../ellint.html" title="Elliptic Integrals">
+<link rel="prev" href="../ellint.html" title="Elliptic Integrals">
+<link rel="next" href="ellint_carlson.html" title="Elliptic Integrals - Carlson Form">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../ellint.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ellint_carlson.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_ellint_ellint_intro">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.ellint.ellint_intro"></a><a class="link" href="ellint_intro.html" title="Elliptic Integral Overview">Elliptic Integral Overview</a>
+</h3></div></div></div>
+<p>
+ The main reference for the elliptic integrals is:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ M. Abramowitz and I. A. Stegun (Eds.) (1964) Handbook of Mathematical Functions
+ with Formulas, Graphs, and Mathematical Tables, National Bureau of Standards
+ Applied Mathematics Series, U.S. Government Printing Office, Washington,
+ D.C.
+ </p></blockquote></div>
+<p>
+ Mathworld also contain a lot of useful background information:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <a href="http://mathworld.wolfram.com/EllipticIntegral.html" target="_top">Weisstein,
+ Eric W. "Elliptic Integral." From MathWorld--A Wolfram Web Resource.</a>
+ </p></blockquote></div>
+<p>
+ As does <a href="http://en.wikipedia.org/wiki/Elliptic_integral" target="_top">Wikipedia
+ Elliptic integral</a>.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_intro.h0"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_intro.notation"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.notation">Notation</a>
+ </h5>
+<p>
+ All variables are real numbers unless otherwise noted.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_intro.h1"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_intro.definition"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.definition">Definition</a>
+ </h5>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint1.png"></span>
+ </p>
+<p>
+ is called elliptic integral if <span class="emphasis"><em>R(t, s)</em></span> is a rational
+ function of <span class="emphasis"><em>t</em></span> and <span class="emphasis"><em>s</em></span>, and <span class="emphasis"><em>s<sup>2</sup></em></span>
+ is a cubic or quartic polynomial in <span class="emphasis"><em>t</em></span>.
+ </p>
+<p>
+ Elliptic integrals generally can not be expressed in terms of elementary
+ functions. However, Legendre showed that all elliptic integrals can be reduced
+ to the following three canonical forms:
+ </p>
+<p>
+ Elliptic Integral of the First Kind (Legendre form)
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint2.png"></span>
+ </p>
+<p>
+ Elliptic Integral of the Second Kind (Legendre form)
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint3.png"></span>
+ </p>
+<p>
+ Elliptic Integral of the Third Kind (Legendre form)
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint4.png"></span>
+ </p>
+<p>
+ where
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint5.png"></span>
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ <span class="emphasis"><em>φ</em></span> is called the amplitude.
+ </p>
+<p>
+ <span class="emphasis"><em>k</em></span> is called the modulus.
+ </p>
+<p>
+ <span class="emphasis"><em>α</em></span> is called the modular angle.
+ </p>
+<p>
+ <span class="emphasis"><em>n</em></span> is called the characteristic.
+ </p>
+</td></tr>
+</table></div>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ Perhaps more than any other special functions the elliptic integrals are
+ expressed in a variety of different ways. In particular, the final parameter
+ <span class="emphasis"><em>k</em></span> (the modulus) may be expressed using a modular angle
+ α, or a parameter <span class="emphasis"><em>m</em></span>. These are related by:
+ </p>
+<p>
+ k = sinα
+ </p>
+<p>
+ m = k<sup>2</sup> = sin<sup>2</sup>α
+ </p>
+<p>
+ So that the integral of the third kind (for example) may be expressed as
+ either:
+ </p>
+<p>
+ Π(n, φ, k)
+ </p>
+<p>
+ Π(n, φ \ α)
+ </p>
+<p>
+ Π(n, φ| m)
+ </p>
+<p>
+ To further complicate matters, some texts refer to the <span class="emphasis"><em>complement
+ of the parameter m</em></span>, or 1 - m, where:
+ </p>
+<p>
+ 1 - m = 1 - k<sup>2</sup> = cos<sup>2</sup>α
+ </p>
+<p>
+ This implementation uses <span class="emphasis"><em>k</em></span> throughout: this matches
+ the requirements of the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Technical
+ Report on C++ Library Extensions</a>. However, you should be extra
+ careful when using these functions!
+ </p>
+</td></tr>
+</table></div>
+<p>
+ When <span class="emphasis"><em>φ</em></span> = <span class="emphasis"><em>π</em></span> / 2, the elliptic integrals
+ are called <span class="emphasis"><em>complete</em></span>.
+ </p>
+<p>
+ Complete Elliptic Integral of the First Kind (Legendre form)
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint6.png"></span>
+ </p>
+<p>
+ Complete Elliptic Integral of the Second Kind (Legendre form)
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint7.png"></span>
+ </p>
+<p>
+ Complete Elliptic Integral of the Third Kind (Legendre form)
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint8.png"></span>
+ </p>
+<p>
+ Carlson [<a class="link" href="ellint_intro.html#ellint_ref_carlson77">Carlson77</a>] [<a class="link" href="ellint_intro.html#ellint_ref_carlson78">Carlson78</a>]
+ gives an alternative definition of elliptic integral's canonical forms:
+ </p>
+<p>
+ Carlson's Elliptic Integral of the First Kind
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint9.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>x</em></span>, <span class="emphasis"><em>y</em></span>, <span class="emphasis"><em>z</em></span>
+ are nonnegative and at most one of them may be zero.
+ </p>
+<p>
+ Carlson's Elliptic Integral of the Second Kind
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint10.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>x</em></span>, <span class="emphasis"><em>y</em></span> are nonnegative, at
+ most one of them may be zero, and <span class="emphasis"><em>z</em></span> must be positive.
+ </p>
+<p>
+ Carlson's Elliptic Integral of the Third Kind
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint11.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>x</em></span>, <span class="emphasis"><em>y</em></span>, <span class="emphasis"><em>z</em></span>
+ are nonnegative, at most one of them may be zero, and <span class="emphasis"><em>p</em></span>
+ must be nonzero.
+ </p>
+<p>
+ Carlson's Degenerate Elliptic Integral
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint12.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>x</em></span> is nonnegative and <span class="emphasis"><em>y</em></span> is
+ nonzero.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ <span class="emphasis"><em>R<sub>C</sub>(x, y) = R<sub>F</sub>(x, y, y)</em></span>
+ </p>
+<p>
+ <span class="emphasis"><em>R<sub>D</sub>(x, y, z) = R<sub>J</sub>(x, y, z, z)</em></span>
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.ellint.ellint_intro.h2"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_intro.duplication_theorem"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.duplication_theorem">Duplication
+ Theorem</a>
+ </h5>
+<p>
+ Carlson proved in [<a class="link" href="ellint_intro.html#ellint_ref_carlson78">Carlson78</a>]
+ that
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint13.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_intro.h3"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_intro.carlson_s_formulas"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.carlson_s_formulas">Carlson's
+ Formulas</a>
+ </h5>
+<p>
+ The Legendre form and Carlson form of elliptic integrals are related by equations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint14.png"></span>
+ </p>
+<p>
+ In particular,
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ellint15.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_intro.h4"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_intro.numerical_algorithms"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.numerical_algorithms">Numerical
+ Algorithms</a>
+ </h5>
+<p>
+ The conventional methods for computing elliptic integrals are Gauss and Landen
+ transformations, which converge quadratically and work well for elliptic
+ integrals of the first and second kinds. Unfortunately they suffer from loss
+ of significant digits for the third kind. Carlson's algorithm [<a class="link" href="ellint_intro.html#ellint_ref_carlson79">Carlson79</a>]
+ [<a class="link" href="ellint_intro.html#ellint_ref_carlson78">Carlson78</a>], by contrast, provides
+ a unified method for all three kinds of elliptic integrals with satisfactory
+ precisions.
+ </p>
+<h5>
+<a name="math_toolkit.ellint.ellint_intro.h5"></a>
+ <span class="phrase"><a name="math_toolkit.ellint.ellint_intro.references"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.references">References</a>
+ </h5>
+<p>
+ Special mention goes to:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ A. M. Legendre, <span class="emphasis"><em>Traitd des Fonctions Elliptiques et des Integrales
+ Euleriennes</em></span>, Vol. 1. Paris (1825).
+ </p></blockquote></div>
+<p>
+ However the main references are:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ <a name="ellint_ref_AS"></a>M. Abramowitz and I. A. Stegun (Eds.) (1964)
+ Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical
+ Tables, National Bureau of Standards Applied Mathematics Series, U.S.
+ Government Printing Office, Washington, D.C.
+ </li>
+<li class="listitem">
+ <a name="ellint_ref_carlson79"></a>B.C. Carlson, <span class="emphasis"><em>Computing
+ elliptic integrals by duplication</em></span>, Numerische Mathematik,
+ vol 33, 1 (1979).
+ </li>
+<li class="listitem">
+ <a name="ellint_ref_carlson77"></a>B.C. Carlson, <span class="emphasis"><em>Elliptic Integrals
+ of the First Kind</em></span>, SIAM Journal on Mathematical Analysis,
+ vol 8, 231 (1977).
+ </li>
+<li class="listitem">
+ <a name="ellint_ref_carlson78"></a>B.C. Carlson, <span class="emphasis"><em>Short Proofs
+ of Three Theorems on Elliptic Integrals</em></span>, SIAM Journal on Mathematical
+ Analysis, vol 9, 524 (1978).
+ </li>
+<li class="listitem">
+ <a name="ellint_ref_carlson81"></a>B.C. Carlson and E.M. Notis, <span class="emphasis"><em>ALGORITHM
+ 577: Algorithms for Incomplete Elliptic Integrals</em></span>, ACM Transactions
+ on Mathematmal Software, vol 7, 398 (1981).
+ </li>
+<li class="listitem">
+ B. C. Carlson, <span class="emphasis"><em>On computing elliptic integrals and functions</em></span>.
+ J. Math. and Phys., 44 (1965), pp. 36-51.
+ </li>
+<li class="listitem">
+ B. C. Carlson, <span class="emphasis"><em>A table of elliptic integrals of the second
+ kind</em></span>. Math. Comp., 49 (1987), pp. 595-606. (Supplement, ibid.,
+ pp. S13-S17.)
+ </li>
+<li class="listitem">
+ B. C. Carlson, <span class="emphasis"><em>A table of elliptic integrals of the third kind</em></span>.
+ Math. Comp., 51 (1988), pp. 267-280. (Supplement, ibid., pp. S1-S5.)
+ </li>
+<li class="listitem">
+ B. C. Carlson, <span class="emphasis"><em>A table of elliptic integrals: cubic cases</em></span>.
+ Math. Comp., 53 (1989), pp. 327-333.
+ </li>
+<li class="listitem">
+ B. C. Carlson, <span class="emphasis"><em>A table of elliptic integrals: one quadratic
+ factor</em></span>. Math. Comp., 56 (1991), pp. 267-280.
+ </li>
+<li class="listitem">
+ B. C. Carlson, <span class="emphasis"><em>A table of elliptic integrals: two quadratic
+ factors</em></span>. Math. Comp., 59 (1992), pp. 165-180.
+ </li>
+<li class="listitem">
+ B. C. Carlson, <span class="emphasis"><em><a href="http://arxiv.org/abs/math.CA/9409227" target="_top">Numerical
+ computation of real or complex elliptic integrals</a></em></span>.
+ Numerical Algorithms, Volume 10, Number 1 / March, 1995, p13-26.
+ </li>
+<li class="listitem">
+ B. C. Carlson and John L. Gustafson, <span class="emphasis"><em><a href="http://arxiv.org/abs/math.CA/9310223" target="_top">Asymptotic
+ Approximations for Symmetric Elliptic Integrals</a></em></span>, SIAM
+ Journal on Mathematical Analysis, Volume 25, Issue 2 (March 1994), 288-303.
+ </li>
+</ol></div>
+<p>
+ The following references, while not directly relevent to our implementation,
+ may also be of interest:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ R. Burlisch, <span class="emphasis"><em>Numerical Compuation of Elliptic Integrals and
+ Elliptic Functions.</em></span> Numerical Mathematik 7, 78-90.
+ </li>
+<li class="listitem">
+ R. Burlisch, <span class="emphasis"><em>An extension of the Bartky Transformation to Incomplete
+ Elliptic Integrals of the Third Kind</em></span>. Numerical Mathematik
+ 13, 266-284.
+ </li>
+<li class="listitem">
+ R. Burlisch, <span class="emphasis"><em>Numerical Compuation of Elliptic Integrals and
+ Elliptic Functions. III</em></span>. Numerical Mathematik 13, 305-315.
+ </li>
+<li class="listitem">
+ T. Fukushima and H. Ishizaki, <span class="emphasis"><em><a href="http://adsabs.harvard.edu/abs/1994CeMDA..59..237F" target="_top">Numerical
+ Computation of Incomplete Elliptic Integrals of a General Form.</a></em></span>
+ Celestial Mechanics and Dynamical Astronomy, Volume 59, Number 3 / July,
+ 1994, 237-251.
+ </li>
+</ol></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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../ellint.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ellint_carlson.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/error_handling.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/error_handling.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,1118 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Error Handling</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="result_type.html" title="Calculation of the Type of the Result">
+<link rel="next" href="compilers_overview.html" title="Compilers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="result_type.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="compilers_overview.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_error_handling">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.error_handling"></a><a class="link" href="error_handling.html" title="Error Handling">Error Handling</a>
+</h2></div></div></div>
+<h4>
+<a name="math_toolkit.error_handling.h0"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.quick_reference"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.quick_reference">Quick
+ Reference</a>
+ </h4>
+<p>
+ Handling of errors by this library is split into two orthogonal parts:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ What kind of error has been raised?
+ </li>
+<li class="listitem">
+ What should be done when the error is raised?
+ </li>
+</ul></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The default error actions are to throw an exception with an informative error
+ message. If you do not try to catch the exception, you will not see the message!
+ </p></td></tr>
+</table></div>
+<p>
+ The kinds of errors that can be raised are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">Domain Error</span></dt>
+<dd><p>
+ Occurs when one or more arguments to a function are out of range.
+ </p></dd>
+<dt><span class="term">Pole Error</span></dt>
+<dd><p>
+ Occurs when the particular arguments cause the function to be evaluated
+ at a pole with no well defined residual value. For example if <a class="link" href="sf_gamma/tgamma.html" title="Gamma">tgamma</a>
+ is evaluated at exactly -2, the function approaches different limiting
+ values depending upon whether you approach from just above or just below
+ -2. Hence the function has no well defined value at this point and a
+ Pole Error will be raised.
+ </p></dd>
+<dt><span class="term">Overflow Error</span></dt>
+<dd><p>
+ Occurs when the result is either infinite, or too large to represent
+ in the numeric type being returned by the function.
+ </p></dd>
+<dt><span class="term">Underflow Error</span></dt>
+<dd><p>
+ Occurs when the result is not zero, but is too small to be represented
+ by any other value in the type being returned by the function.
+ </p></dd>
+<dt><span class="term">Denormalisation Error</span></dt>
+<dd><p>
+ Occurs when the returned result would be a denormalised value.
+ </p></dd>
+<dt><span class="term">Rounding Error</span></dt>
+<dd><p>
+ Occurs when the argument to one of the rounding functions <a class="link" href="rounding/trunc.html" title="Truncation Functions">trunc</a>,
+ <a class="link" href="rounding/round.html" title="Rounding Functions">round</a> and <a class="link" href="rounding/modf.html" title="Integer and Fractional Part Splitting (modf)">modf</a>
+ can not be represented as an integer type, is outside the range of the
+ result type.
+ </p></dd>
+<dt><span class="term">Evaluation Error</span></dt>
+<dd><p>
+ Occurs if no method of evaluation is known, or when an internal error
+ occurred that prevented the result from being evaluated: this should
+ never occur, but if it does, then it's likely to be due to an iterative
+ method not converging fast enough.
+ </p></dd>
+<dt><span class="term">Indeterminate Result Error</span></dt>
+<dd><p>
+ Occurs when the result of a function is not defined for the values that
+ were passed to it.
+ </p></dd>
+</dl>
+</div>
+<p>
+ The action undertaken by each error condition is determined by the current
+ <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> in effect. This can be changed program-wide
+ by setting some configuration macros, or at namespace scope, or at the call
+ site (by specifying a specific policy in the function call).
+ </p>
+<p>
+ The available actions are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">throw_on_error</span></dt>
+<dd><p>
+ Throws the exception most appropriate to the error condition.
+ </p></dd>
+<dt><span class="term">errno_on_error</span></dt>
+<dd><p>
+ Sets ::errno to an appropriate value, and then returns the most appropriate
+ result
+ </p></dd>
+<dt><span class="term">ignore_error</span></dt>
+<dd><p>
+ Ignores the error and simply the returns the most appropriate result.
+ </p></dd>
+<dt><span class="term">user_error</span></dt>
+<dd><p>
+ Calls a <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">user-supplied
+ error handler</a>.
+ </p></dd>
+</dl>
+</div>
+<p>
+ The following tables show all the permutations of errors and actions, with
+ the <span class="bold"><strong>default action for each error shown in bold</strong></span>:
+ </p>
+<div class="table">
+<a name="math_toolkit.error_handling.possible_actions_for_domain_erro"></a><p class="title"><b>Table 1.1. Possible Actions for Domain Errors</b></p>
+<div class="table-contents"><table class="table" summary="Possible Actions for Domain Errors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Action
+ </p>
+ </th>
+<th>
+ <p>
+ Behaviour
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ throw_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code></strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ errno_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ignore_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_domain_error</span></code>:
+ <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this function
+ must be defined by the user</a>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.error_handling.possible_actions_for_pole_errors"></a><p class="title"><b>Table 1.2. Possible Actions for Pole Errors</b></p>
+<div class="table-contents"><table class="table" summary="Possible Actions for Pole Errors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Action
+ </p>
+ </th>
+<th>
+ <p>
+ Behaviour
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ throw_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code></strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ errno_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ignore_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_pole_error</span></code>:
+ <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this function
+ must be defined by the user</a>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.error_handling.possible_actions_for_overflow_er"></a><p class="title"><b>Table 1.3. Possible Actions for Overflow Errors</b></p>
+<div class="table-contents"><table class="table" summary="Possible Actions for Overflow Errors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Action
+ </p>
+ </th>
+<th>
+ <p>
+ Behaviour
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ throw_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code></strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ errno_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">ERANGE</span></code> and returns
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ignore_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_overflow_error</span></code>:
+ <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this function
+ must be defined by the user</a>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.error_handling.possible_actions_for_underflow_e"></a><p class="title"><b>Table 1.4. Possible Actions for Underflow Errors</b></p>
+<div class="table-contents"><table class="table" summary="Possible Actions for Underflow Errors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Action
+ </p>
+ </th>
+<th>
+ <p>
+ Behaviour
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ throw_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ errno_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">ERANGE</span></code> and returns
+ 0.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ignore_error
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Returns 0</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_underflow_error</span></code>:
+ <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this function
+ must be defined by the user</a>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.error_handling.possible_actions_for_denorm_erro"></a><p class="title"><b>Table 1.5. Possible Actions for Denorm Errors</b></p>
+<div class="table-contents"><table class="table" summary="Possible Actions for Denorm Errors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Action
+ </p>
+ </th>
+<th>
+ <p>
+ Behaviour
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ throw_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ errno_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">ERANGE</span></code> and returns
+ the denormalised value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ignore_error
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Returns the denormalised value.</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_denorm_error</span></code>:
+ <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this function
+ must be defined by the user</a>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.error_handling.possible_actions_for_rounding_er"></a><p class="title"><b>Table 1.6. Possible Actions for Rounding Errors</b></p>
+<div class="table-contents"><table class="table" summary="Possible Actions for Rounding Errors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Action
+ </p>
+ </th>
+<th>
+ <p>
+ Behaviour
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ throw_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Throws <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">rounding_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ errno_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">ERANGE</span></code> and returns
+ the largest representable value of the target integer type (or the
+ most negative value if the argument to the function was less than
+ zero).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ignore_error
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Returns the largest representable value of
+ the target integer type (or the most negative value if the argument
+ to the function was less than zero).</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_rounding_error</span></code>:
+ <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this function
+ must be defined by the user</a>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.error_handling.possible_actions_for_internal_ev"></a><p class="title"><b>Table 1.7. Possible Actions for Internal Evaluation Errors</b></p>
+<div class="table-contents"><table class="table" summary="Possible Actions for Internal Evaluation Errors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Action
+ </p>
+ </th>
+<th>
+ <p>
+ Behaviour
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ throw_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Throws <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">evaluation_error</span></code></strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ errno_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns
+ the closest approximation found.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ignore_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the closest approximation found.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_evaluation_error</span></code>:
+ <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this function
+ must be defined by the user</a>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.error_handling.possible_actions_for_indetermina"></a><p class="title"><b>Table 1.8. Possible Actions for Indeterminate Result Errors</b></p>
+<div class="table-contents"><table class="table" summary="Possible Actions for Indeterminate Result Errors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Action
+ </p>
+ </th>
+<th>
+ <p>
+ Behaviour
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ throw_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ errno_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns
+ the same value as <code class="computeroutput"><span class="identifier">ignore_error</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ignore_error
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Returns a default result that depends on the
+ function where the error occurred.</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_indeterminate_result_error</span></code>:
+ <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this function
+ must be defined by the user</a>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ All these error conditions are in namespace boost::math::policies, made available,
+ for example, a by namespace declaration using <code class="computeroutput"><span class="keyword">namespace</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span></code> or individual using declarations <code class="computeroutput"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">overflow_error</span><span class="special">;</span></code>.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h1"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.rationale"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.rationale">Rationale</a>
+ </h4>
+<p>
+ The flexibility of the current implementation should be reasonably obvious:
+ the default behaviours were chosen based on feedback during the formal review
+ of this library. It was felt that:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Genuine errors should be flagged with exceptions rather than following
+ C-compatible behaviour and setting <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>.
+ </li>
+<li class="listitem">
+ Numeric underflow and denormalised results were not considered to be fatal
+ errors in most cases, so it was felt that these should be ignored.
+ </li>
+<li class="listitem">
+ If there is more than one error, only the first detected will be reported
+ in the throw message.
+ </li>
+</ul></div>
+<h4>
+<a name="math_toolkit.error_handling.h2"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.finding_more_information"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.finding_more_information">Finding
+ More Information</a>
+ </h4>
+<p>
+ There are some pre-processor macro defines that can be used to <a class="link" href="pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults">change
+ the policy defaults</a>. See also the <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy section</a>.
+ </p>
+<p>
+ An example is at the Policy tutorial in <a class="link" href="pol_tutorial/changing_policy_defaults.html" title="Changing the Policy Defaults">Changing
+ the Policy Defaults</a>.
+ </p>
+<p>
+ Full source code of this typical example of passing a 'bad' argument (negative
+ degrees of freedom) to Student's t distribution is <a class="link" href="stat_tut/weg/error_eg.html" title="Error Handling Example">in
+ the error handling example</a>.
+ </p>
+<p>
+ The various kind of errors are described in more detail below.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h3"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.domain_error"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.domain_error">Domain
+ Errors</a>
+ </h4>
+<p>
+ When a special function is passed an argument that is outside the range of
+ values for which that function is defined, then the function returns the result
+ of:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_domain_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">);</span>
+</pre>
+<p>
+ Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating-point
+ type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code>
+ is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code>
+ is an error message describing the problem, Val is the value that was out of
+ range, and <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> is the current policy in use
+ for the function that was called.
+ </p>
+<p>
+ The default policy behaviour of this function is to throw a std::domain_error
+ C++ exception. But if the <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> is to ignore
+ the error, or set global <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>,
+ then a NaN will be returned.
+ </p>
+<p>
+ This behaviour is chosen to assist compatibility with the behaviour of <span class="emphasis"><em>ISO/IEC
+ 9899:1999 Programming languages - C</em></span> and with the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Draft
+ Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph
+ 6</a>:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>"Each of the functions declared above shall return a NaN (Not
+ a Number) if any argument value is a NaN, but it shall not report a domain
+ error. Otherwise, each of the functions declared above shall report a domain
+ error for just those argument values for which:</em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ <span class="emphasis"><em>"the function description's Returns clause explicitly specifies
+ a domain, and those arguments fall outside the specified domain; or</em></span>
+ </p>
+<p>
+ <span class="emphasis"><em>"the corresponding mathematical function value has a non-zero
+ imaginary component; or</em></span>
+ </p>
+<p>
+ <span class="emphasis"><em>"the corresponding mathematical function is not mathematically
+ defined.</em></span>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>"Note 2: A mathematical function is mathematically defined
+ for a given set of argument values if it is explicitly defined for that set
+ of argument values or if its limiting value exists and does not depend on
+ the direction of approach."</em></span>
+ </p></blockquote></div>
+<p>
+ Note that in order to support information-rich error messages when throwing
+ exceptions, <code class="computeroutput"><span class="identifier">Message</span></code> must contain
+ a Boost.Format recognised
+ format specifier: the argument <code class="computeroutput"><span class="identifier">Val</span></code>
+ is inserted into the error message according to the specifier used.
+ </p>
+<p>
+ For example if <code class="computeroutput"><span class="identifier">Message</span></code> contains
+ a "%1%" then it is replaced by the value of <code class="computeroutput"><span class="identifier">Val</span></code>
+ to the full precision of T, where as "%.3g" would contain the value
+ of <code class="computeroutput"><span class="identifier">Val</span></code> to 3 digits. See the
+ Boost.Format documentation
+ for more details.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h4"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.pole_error"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.pole_error">Evaluation
+ at a pole</a>
+ </h4>
+<p>
+ When a special function is passed an argument that is at a pole without a well
+ defined residual value, then the function returns the result of:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_pole_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">);</span>
+</pre>
+<p>
+ Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point
+ type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code>
+ is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code>
+ is an error message describing the problem, <code class="computeroutput"><span class="identifier">Val</span></code>
+ is the value of the argument that is at a pole, and <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a>
+ is the current policy in use for the function that was called.
+ </p>
+<p>
+ The default behaviour of this function is to throw a std::domain_error exception.
+ But <a class="link" href="pol_ref/error_handling_policies.html" title="Error Handling Policies">error handling
+ policies</a> can be used to change this, for example to <code class="computeroutput"><span class="identifier">ignore_error</span></code>
+ and return NaN.
+ </p>
+<p>
+ Note that in order to support information-rich error messages when throwing
+ exceptions, <code class="computeroutput"><span class="identifier">Message</span></code> must contain
+ a Boost.Format recognised
+ format specifier: the argument <code class="computeroutput"><span class="identifier">val</span></code>
+ is inserted into the error message according to the specifier used.
+ </p>
+<p>
+ For example if <code class="computeroutput"><span class="identifier">Message</span></code> contains
+ a "%1%" then it is replaced by the value of <code class="computeroutput"><span class="identifier">val</span></code>
+ to the full precision of T, where as "%.3g" would contain the value
+ of <code class="computeroutput"><span class="identifier">val</span></code> to 3 digits. See the
+ Boost.Format documentation
+ for more details.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h5"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.overflow_error"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.overflow_error">Numeric
+ Overflow</a>
+ </h4>
+<p>
+ When the result of a special function is too large to fit in the argument floating-point
+ type, then the function returns the result of:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_overflow_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">);</span>
+</pre>
+<p>
+ Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating-point
+ type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code>
+ is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code>
+ is an error message describing the problem, and <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a>
+ is the current policy in use for the function that was called.
+ </p>
+<p>
+ The default policy for this function is that <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code>
+ C++ exception is thrown. But if, for example, an <code class="computeroutput"><span class="identifier">ignore_error</span></code>
+ policy is used, then returns <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code>.
+ In this situation if the type <code class="computeroutput"><span class="identifier">T</span></code>
+ doesn't support infinities, the maximum value for the type is returned.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h6"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.underflow_error"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.underflow_error">Numeric
+ Underflow</a>
+ </h4>
+<p>
+ If the result of a special function is known to be non-zero, but the calculated
+ result underflows to zero, then the function returns the result of:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_underflow_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">);</span>
+</pre>
+<p>
+ Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point
+ type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code>
+ is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code>
+ is an error message describing the problem, and <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a>
+ is the current policy in use for the called function.
+ </p>
+<p>
+ The default version of this function returns zero. But with another policy,
+ like <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, throws
+ an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code> C++ exception.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h7"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.denorm_error"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.denorm_error">Denormalisation
+ Errors</a>
+ </h4>
+<p>
+ If the result of a special function is a denormalised value <span class="emphasis"><em>z</em></span>
+ then the function returns the result of:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_denorm_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">);</span>
+</pre>
+<p>
+ Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point
+ type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code>
+ is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code>
+ is an error message describing the problem, and <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a>
+ is the current policy in use for the called function.
+ </p>
+<p>
+ The default version of this function returns <span class="emphasis"><em>z</em></span>. But with
+ another policy, like <code class="computeroutput"><span class="identifier">throw_on_error</span></code>
+ throws an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code> C++ exception.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h8"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.evaluation_error"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.evaluation_error">Evaluation
+ Errors</a>
+ </h4>
+<p>
+ When a special function calculates a result that is known to be erroneous,
+ or where the result is incalculable then it calls:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_evaluation_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">);</span>
+</pre>
+<p>
+ Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point
+ type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code>
+ is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code>
+ is an error message describing the problem, <code class="computeroutput"><span class="identifier">Val</span></code>
+ is the erroneous value, and <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> is the current
+ policy in use for the called function.
+ </p>
+<p>
+ The default behaviour of this function is to throw a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">evaluation_error</span></code>.
+ </p>
+<p>
+ Note that in order to support information rich error messages when throwing
+ exceptions, <code class="computeroutput"><span class="identifier">Message</span></code> must contain
+ a Boost.Format recognised
+ format specifier: the argument <code class="computeroutput"><span class="identifier">val</span></code>
+ is inserted into the error message according to the specifier used.
+ </p>
+<p>
+ For example if <code class="computeroutput"><span class="identifier">Message</span></code> contains
+ a "%1%" then it is replaced by the value of <code class="computeroutput"><span class="identifier">val</span></code>
+ to the full precision of T, where as "%.3g" would contain the value
+ of <code class="computeroutput"><span class="identifier">val</span></code> to 3 digits. See the
+ Boost.Format documentation
+ for more details.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h9"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.indeterminate_result_error"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.indeterminate_result_error">Indeterminate
+ Result Errors</a>
+ </h4>
+<p>
+ When the result of a special function is indeterminate for the value that was
+ passed to it, then the function returns the result of:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_overflow_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <span class="identifier">Default</span><span class="special">,</span> <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">);</span>
+</pre>
+<p>
+ Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating-point
+ type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code>
+ is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code>
+ is an error message describing the problem, Val is the value for which the
+ result is indeterminate, Default is an alternative default result that must
+ be returned for <code class="computeroutput"><span class="identifier">ignore_error</span></code>
+ and <code class="computeroutput"><span class="identifier">errno_on_erro</span></code> policies,
+ and <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> is the current policy in use for the
+ function that was called.
+ </p>
+<p>
+ The default policy for this function is <code class="computeroutput"><span class="identifier">ignore_error</span></code>:
+ note that this error type is reserved for situations where the result is mathematically
+ undefined or indeterminate, but there is none the less a convention for what
+ the result should be: for example the C99 standard specifies that the result
+ of 0<sup>0</sup> is 1, even though the result is actually mathematically indeterminate.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h10"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.rounding_error"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.rounding_error">Rounding
+ Errors</a>
+ </h4>
+<p>
+ When one of the rounding functions <a class="link" href="rounding/round.html" title="Rounding Functions">round</a>,
+ <a class="link" href="rounding/trunc.html" title="Truncation Functions">trunc</a> or <a class="link" href="rounding/modf.html" title="Integer and Fractional Part Splitting (modf)">modf</a>
+ is called with an argument that has no integer representation, or is too large
+ to be represented in the result type then the value returned is the result
+ of a call to:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_rounding_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">);</span>
+</pre>
+<p>
+ Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point
+ type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code>
+ is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code>
+ is an error message describing the problem, <code class="computeroutput"><span class="identifier">Val</span></code>
+ is the erroneous argument, and <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> is the
+ current policy in use for the called function.
+ </p>
+<p>
+ The default behaviour of this function is to throw a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">rounding_error</span></code>.
+ </p>
+<p>
+ Note that in order to support information rich error messages when throwing
+ exceptions, <code class="computeroutput"><span class="identifier">Message</span></code> must contain
+ a Boost.Format recognised
+ format specifier: the argument <code class="computeroutput"><span class="identifier">val</span></code>
+ is inserted into the error message according to the specifier used.
+ </p>
+<p>
+ For example if <code class="computeroutput"><span class="identifier">Message</span></code> contains
+ a "%1%" then it is replaced by the value of <code class="computeroutput"><span class="identifier">val</span></code>
+ to the full precision of T, where as "%.3g" would contain the value
+ of <code class="computeroutput"><span class="identifier">val</span></code> to 3 digits. See the
+ Boost.Format documentation
+ for more details.
+ </p>
+<h4>
+<a name="math_toolkit.error_handling.h11"></a>
+ <span class="phrase"><a name="math_toolkit.error_handling.checked_narrowing_cast"></a></span><a class="link" href="error_handling.html#math_toolkit.error_handling.checked_narrowing_cast">Errors
+ from typecasts</a>
+ </h4>
+<p>
+ Many special functions evaluate their results at a higher precision than their
+ arguments in order to ensure full machine precision in the result: for example,
+ a function passed a float argument may evaluate its result using double precision
+ internally. Many of the errors listed above may therefore occur not during
+ evaluation, but when converting the result to the narrower result type. The
+ function:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">checked_narrowing_cast</span><span class="special">(</span><span class="identifier">U</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">val</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">);</span>
+</pre>
+<p>
+ Is used to perform these conversions, and will call the error handlers listed
+ above on <a class="link" href="error_handling.html#math_toolkit.error_handling.overflow_error">overflow</a>,
+ <a class="link" href="error_handling.html#math_toolkit.error_handling.underflow_error">underflow</a>
+ or <a class="link" href="error_handling.html#math_toolkit.error_handling.denorm_error">denormalisation</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="result_type.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="compilers_overview.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/exp.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/exp.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>The Quaternionic Exponential</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="quat_tests.html" title="Test Program">
+<link rel="next" href="acknowledgement.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="quat_tests.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgement.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_exp">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.exp"></a><a class="link" href="exp.html" title="The Quaternionic Exponential">The Quaternionic Exponential</a>
+</h2></div></div></div>
+<p>
+ Please refer to the following PDF's:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="../../../quaternion/TQE.pdf" target="_top">The Quaternionic Exponential (and
+ beyond)</a>
+ </li>
+<li class="listitem">
+ <a href="../../../quaternion/TQE_EA.pdf" target="_top">The Quaternionic Exponential (and
+ beyond) ERRATA & ADDENDA</a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="quat_tests.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgement.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/expint.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/expint.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,40 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Exponential Integrals</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="zetas/zeta.html" title="Riemann Zeta Function">
+<link rel="next" href="expint/expint_n.html" title="Exponential Integral En">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="zetas/zeta.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="expint/expint_n.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_expint">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.expint"></a><a class="link" href="expint.html" title="Exponential Integrals">Exponential Integrals</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Exponential Integral En</span></dt>
+<dt><span class="section">Exponential Integral Ei</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="zetas/zeta.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="expint/expint_n.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/expint/expint_i.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/expint/expint_i.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,286 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Exponential Integral Ei</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../expint.html" title="Exponential Integrals">
+<link rel="prev" href="expint_n.html" title="Exponential Integral En">
+<link rel="next" href="../powers.html" title="Basic Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="expint_n.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../powers.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_expint_expint_i">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.expint.expint_i"></a><a class="link" href="expint_i.html" title="Exponential Integral Ei">Exponential Integral Ei</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.expint.expint_i.h0"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_i.synopsis"></a></span><a class="link" href="expint_i.html#math_toolkit.expint.expint_i.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">expint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expint</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expint</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return type is <code class="computeroutput"><span class="keyword">double</span></code> if T is an integer type, and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.expint.expint_i.h1"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_i.description"></a></span><a class="link" href="expint_i.html#math_toolkit.expint.expint_i.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expint</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expint</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the <a href="http://mathworld.wolfram.com/ExponentialIntegral.html" target="_top">exponential
+ integral</a> of z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/expint_i_1.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/expint_i.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.expint.expint_i.h2"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_i.accuracy"></a></span><a class="link" href="expint_i.html#math_toolkit.expint.expint_i.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon) found on
+ various platforms with various floating point types, along with comparisons
+ to Cody's SPECFUN implementation and the GSL-1.9
+ library. Unless otherwise specified any floating point type that is narrower
+ than the one shown will have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.expint.expint_i.errors_in_the_function_expint_z"></a><p class="title"><b>Table 3.32. Errors In the Function expint(z)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function expint(z)">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Error
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.4 Mean=0.6
+ </p>
+ <p>
+ GSL Peak=8.9 Mean=0.7
+ </p>
+ <p>
+ SPECFUN (Cody) Peak=2.5 Mean=0.6
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA_EM64, gcc-4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5.1 Mean=0.8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5.0 Mean=0.8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.9 Mean=0.63
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ It should be noted that all three libraries tested above offer sub-epsilon
+ precision over most of their range.
+ </p>
+<p>
+ GSL has the greatest difficulty near the positive root of En, while Cody's
+ SPECFUN along with this implementation increase their error rates very slightly
+ over the range [4,6].
+ </p>
+<h5>
+<a name="math_toolkit.expint.expint_i.h3"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_i.testing"></a></span><a class="link" href="expint_i.html#math_toolkit.expint.expint_i.testing">Testing</a>
+ </h5>
+<p>
+ The tests for these functions come in two parts: basic sanity checks use
+ spot values calculated using <a href="http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=ExpIntegralEi" target="_top">Mathworld's
+ online evaluator</a>, while accuracy checks use high-precision test values
+ calculated at 1000-bit precision with NTL::RR
+ and this implementation. Note that the generic and type-specific versions
+ of these functions use differing implementations internally, so this gives
+ us reasonably independent test data. Using our test data to test other "known
+ good" implementations also provides an additional sanity check.
+ </p>
+<h5>
+<a name="math_toolkit.expint.expint_i.h4"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_i.implementation"></a></span><a class="link" href="expint_i.html#math_toolkit.expint.expint_i.implementation">Implementation</a>
+ </h5>
+<p>
+ For x < 0 this function just calls <a class="link" href="expint_n.html" title="Exponential Integral En">zeta</a>(1,
+ -x): which in turn is implemented in terms of rational approximations when
+ the type of x has 113 or fewer bits of precision.
+ </p>
+<p>
+ For x > 0 the generic version is implemented using the infinte series:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/expint_i_2.png"></span>
+ </p>
+<p>
+ However, when the precision of the argument type is known at compile time
+ and is 113 bits or less, then rational approximations <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> are used.
+ </p>
+<p>
+ For 0 < z < 6 a root-preserving approximation of the form:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/expint_i_3.png"></span>
+ </p>
+<p>
+ is used, where z<sub>0</sub> is the positive root of the function, and R(z/3 - 1) is
+ a minimax rational approximation rescaled so that it is evaluated over [-1,1].
+ Note that while the rational approximation over [0,6] converges rapidly to
+ the minimax solution it is rather ill-conditioned in practice. Cody and Thacher
+ [5] experienced the same issue and converted the polynomials into
+ Chebeshev form to ensure stable computation. By experiment we found that
+ the polynomials are just as stable in polynomial as Chebyshev form, <span class="emphasis"><em>provided</em></span>
+ they are computed over the interval [-1,1].
+ </p>
+<p>
+ Over the a series of intervals [a,b] and [b,INF] the rational approximation
+ takes the form:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/expint_i_4.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>c</em></span> is a constant, and R(t) is a minimax solution
+ optimised for low absolute error compared to <span class="emphasis"><em>c</em></span>. Variable
+ <span class="emphasis"><em>t</em></span> is <code class="computeroutput"><span class="number">1</span><span class="special">/</span><span class="identifier">z</span></code> when the range in infinite and <code class="computeroutput"><span class="number">2</span><span class="identifier">z</span><span class="special">/(</span><span class="identifier">b</span><span class="special">-</span><span class="identifier">a</span><span class="special">)</span> <span class="special">-</span> <span class="special">(</span><span class="number">2</span><span class="identifier">a</span><span class="special">/(</span><span class="identifier">b</span><span class="special">-</span><span class="identifier">a</span><span class="special">)</span> <span class="special">+</span> <span class="number">1</span><span class="special">)</span></code> otherwise: this has the effect of scaling
+ z to the interval [-1,1]. As before rational approximations over arbitrary
+ intervals were found to be ill-conditioned: Cody and Thacher solved this
+ issue by converting the polynomials to their J-Fraction equivalent. However,
+ as long as the interval of evaluation was [-1,1] and the number of terms
+ carefully chosen, it was found that the polynomials <span class="emphasis"><em>could</em></span>
+ be evaluated to suitable precision: error rates are typically 2 to 3 epsilon
+ which is comparible to the error rate that Cody and Thacher achieved using
+ J-Fractions, but marginally more efficient given that fewer divisions are
+ involved.
+ </p>
+<div class="footnotes">
+<br><hr style="width:100; text-align:left;margin-left: 0">
+<div id="ftn.math_toolkit.expint.expint_i.f0" class="footnote"><p>[5]
+ W. J. Cody and H. C. Thacher, Jr., Rational Chebyshev approximations for
+ the exponential integral E<sub>1</sub>(x), Math. Comp. 22 (1968), 641-649, and W.
+ J. Cody and H. C. Thacher, Jr., Chebyshev approximations for the exponential
+ integral Ei(x), Math. Comp. 23 (1969), 289-303.
+ </p></div>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="expint_n.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../powers.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/expint/expint_n.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/expint/expint_n.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,284 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Exponential Integral En</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../expint.html" title="Exponential Integrals">
+<link rel="prev" href="../expint.html" title="Exponential Integrals">
+<link rel="next" href="expint_i.html" title="Exponential Integral Ei">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../expint.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="expint_i.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_expint_expint_n">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.expint.expint_n"></a><a class="link" href="expint_n.html" title="Exponential Integral En">Exponential Integral En</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.expint.expint_n.h0"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_n.synopsis"></a></span><a class="link" href="expint_n.html#math_toolkit.expint.expint_n.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">expint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expint</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expint</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return type is <code class="computeroutput"><span class="keyword">double</span></code> if T is an integer type, and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.expint.expint_n.h1"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_n.description"></a></span><a class="link" href="expint_n.html#math_toolkit.expint.expint_n.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expint</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expint</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the <a href="http://mathworld.wolfram.com/En-Function.html" target="_top">exponential
+ integral En</a> of z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/expint_n_1.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/expint2.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.expint.expint_n.h2"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_n.accuracy"></a></span><a class="link" href="expint_n.html#math_toolkit.expint.expint_n.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon) found on
+ various platforms with various floating point types, along with comparisons
+ to the Cephes library.
+ Unless otherwise specified any floating point type that is narrower than
+ the one shown will have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.expint.expint_n.errors_in_the_function_expint_n_"></a><p class="title"><b>Table 3.31. Errors In the Function expint(n, z)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function expint(n, z)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ En
+ </p>
+ </th>
+<th>
+ <p>
+ E1
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=7.1 Mean=1.8
+ </p>
+ <p>
+ Cephes Peak=5.1
+ Mean=1.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.99 Mean=0.5
+ </p>
+ <p>
+ Cephes Peak=3.1
+ Mean=1.1
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA_EM64, gcc-4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=9.9 Mean=2.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.97 Mean=0.4
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=9.9 Mean=2.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.97 Mean=0.4
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=23.3 Mean=3.7
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.6 Mean=0.5
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.expint.expint_n.h3"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_n.testing"></a></span><a class="link" href="expint_n.html#math_toolkit.expint.expint_n.testing">Testing</a>
+ </h5>
+<p>
+ The tests for these functions come in two parts: basic sanity checks use
+ spot values calculated using <a href="http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=ExpIntegralE" target="_top">Mathworld's
+ online evaluator</a>, while accuracy checks use high-precision test values
+ calculated at 1000-bit precision with NTL::RR
+ and this implementation. Note that the generic and type-specific versions
+ of these functions use differing implementations internally, so this gives
+ us reasonably independent test data. Using our test data to test other "known
+ good" implementations also provides an additional sanity check.
+ </p>
+<h5>
+<a name="math_toolkit.expint.expint_n.h4"></a>
+ <span class="phrase"><a name="math_toolkit.expint.expint_n.implementation"></a></span><a class="link" href="expint_n.html#math_toolkit.expint.expint_n.implementation">Implementation</a>
+ </h5>
+<p>
+ The generic version of this function uses the continued fraction:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/expint_n_3.png"></span>
+ </p>
+<p>
+ for large <span class="emphasis"><em>x</em></span> and the infinite series:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/expint_n_2.png"></span>
+ </p>
+<p>
+ for small <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ Where the precision of <span class="emphasis"><em>x</em></span> is known at compile time and
+ is 113 bits or fewer in precision, then rational approximations <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> are used for the <code class="computeroutput"><span class="identifier">n</span>
+ <span class="special">==</span> <span class="number">1</span></code>
+ case.
+ </p>
+<p>
+ For <code class="computeroutput"><span class="identifier">x</span> <span class="special"><</span>
+ <span class="number">1</span></code> the approximating form is a minimax
+ approximation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/expint_n_4.png"></span>
+ </p>
+<p>
+ and for <code class="computeroutput"><span class="identifier">x</span> <span class="special">></span>
+ <span class="number">1</span></code> a Chebyshev interpolated approximation
+ of the form:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/expint_n_5.png"></span>
+ </p>
+<p>
+ is 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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../expint.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expint.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="expint_i.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/factorials.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/factorials.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,44 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Factorials and Binomial Coefficients</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function">
+<link rel="next" href="factorials/sf_factorial.html" title="Factorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sf_gamma/gamma_derivatives.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="factorials/sf_factorial.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_factorials">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.factorials"></a><a class="link" href="factorials.html" title="Factorials and Binomial Coefficients">Factorials and Binomial Coefficients</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Factorial</span></dt>
+<dt><span class="section">Double Factorial</span></dt>
+<dt><span class="section">Rising Factorial</span></dt>
+<dt><span class="section"><a href="factorials/sf_falling_factorial.html">Falling
+ Factorial</a></span></dt>
+<dt><span class="section">Binomial Coefficients</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sf_gamma/gamma_derivatives.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="factorials/sf_factorial.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_binomial.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_binomial.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,135 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Binomial Coefficients</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../factorials.html" title="Factorials and Binomial Coefficients">
+<link rel="prev" href="sf_falling_factorial.html" title="Falling Factorial">
+<link rel="next" href="../sf_beta.html" title="Beta Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sf_falling_factorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../sf_beta.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_factorials_sf_binomial">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.factorials.sf_binomial"></a><a class="link" href="sf_binomial.html" title="Binomial Coefficients">Binomial Coefficients</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">binomial_coefficient</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">binomial_coefficient</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns the binomial coefficient: <sub>n</sub>C<sub>k</sub>.
+ </p>
+<p>
+ Requires k <= n.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ May return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ if the result is too large to represent in type T.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The functions described above are templates where the template argument
+ T can not be deduced from the arguments passed to the function. Therefore
+ if you write something like:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial_coefficient</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span></code>
+ </p>
+<p>
+ You will get a compiler error, ususally indicating that there is no such
+ function to be found. Instead you need to specifiy the return type explicity
+ and write:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial_coefficient</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="number">10</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span></code>
+ </p>
+<p>
+ So that the return type is known. Further, the template argument must be
+ a real-valued type such as <code class="computeroutput"><span class="keyword">float</span></code>
+ or <code class="computeroutput"><span class="keyword">double</span></code> and not an integer
+ type - that would overflow far too easily!
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.factorials.sf_binomial.h0"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_binomial.accuracy"></a></span><a class="link" href="sf_binomial.html#math_toolkit.factorials.sf_binomial.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The accuracy will be the same as for the factorials for small arguments (i.e.
+ no more than one or two epsilon), and the <a class="link" href="../sf_beta/beta_function.html" title="Beta">beta</a>
+ function for larger arguments.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_binomial.h1"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_binomial.testing"></a></span><a class="link" href="sf_binomial.html#math_toolkit.factorials.sf_binomial.testing">Testing</a>
+ </h5>
+<p>
+ The spot tests for the binomial coefficients use data generated by functions.wolfram.com.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_binomial.h2"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_binomial.implementation"></a></span><a class="link" href="sf_binomial.html#math_toolkit.factorials.sf_binomial.implementation">Implementation</a>
+ </h5>
+<p>
+ Binomial coefficients are calculated using table lookup of factorials where
+ possible using:
+ </p>
+<p>
+ <sub>n</sub>C<sub>k</sub> = n! / (k!(n-k)!)
+ </p>
+<p>
+ Otherwise it is implemented in terms of the beta function using the relations:
+ </p>
+<p>
+ <sub>n</sub>C<sub>k</sub> = 1 / (k * <a class="link" href="../sf_beta/beta_function.html" title="Beta">beta</a>(k,
+ n-k+1))
+ </p>
+<p>
+ and
+ </p>
+<p>
+ <sub>n</sub>C<sub>k</sub> = 1 / ((n-k) * <a class="link" href="../sf_beta/beta_function.html" title="Beta">beta</a>(k+1,
+ n-k))
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sf_falling_factorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../sf_beta.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_double_factorial.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_double_factorial.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,151 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Double Factorial</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../factorials.html" title="Factorials and Binomial Coefficients">
+<link rel="prev" href="sf_factorial.html" title="Factorial">
+<link rel="next" href="sf_rising_factorial.html" title="Rising Factorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sf_factorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sf_rising_factorial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_factorials_sf_double_factorial">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.factorials.sf_double_factorial"></a><a class="link" href="sf_double_factorial.html" title="Double Factorial">Double Factorial</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">factorials</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">double_factorial</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">double_factorial</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns <code class="literal">i!!</code>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ May return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ if the result is too large to represent in type T. The implementation is
+ designed to be optimised for small <span class="emphasis"><em>i</em></span> where table lookup
+ of i! is possible.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The functions described above are templates where the template argument
+ T can not be deduced from the arguments passed to the function. Therefore
+ if you write something like:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">double_factorial</span><span class="special">(</span><span class="number">2</span><span class="special">);</span></code>
+ </p>
+<p>
+ You will get a (possibly perplexing) compiler error, ususally indicating
+ that there is no such function to be found. Instead you need to specifiy
+ the return type explicity and write:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">double_factorial</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="number">2</span><span class="special">);</span></code>
+ </p>
+<p>
+ So that the return type is known. Further, the template argument must be
+ a real-valued type such as <code class="computeroutput"><span class="keyword">float</span></code>
+ or <code class="computeroutput"><span class="keyword">double</span></code> and not an integer
+ type - that would overflow far too easily!
+ </p>
+<p>
+ The source code <code class="computeroutput"><span class="keyword">static_assert</span></code>
+ and comment just after the will be:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(!</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_integral</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">value</span><span class="special">);</span>
+<span class="comment">// factorial<unsigned int>(n) is not implemented</span>
+<span class="comment">// because it would overflow integral type T for too small n</span>
+<span class="comment">// to be useful. Use instead a floating-point type,</span>
+<span class="comment">// and convert to an unsigned type if essential, for example:</span>
+<span class="comment">// unsigned int nfac = static_cast<unsigned int>(factorial<double>(n));</span>
+<span class="comment">// See factorial documentation for more detail.</span>
+</pre>
+</td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The argument to <code class="computeroutput"><span class="identifier">double_factorial</span></code>
+ is type <code class="computeroutput"><span class="keyword">unsigned</span></code> even though
+ technically -1!! is defined.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.factorials.sf_double_factorial.h0"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_double_factorial.accuracy"></a></span><a class="link" href="sf_double_factorial.html#math_toolkit.factorials.sf_double_factorial.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The implementation uses a trivial adaptation of the factorial function, so
+ error rates should be no more than a couple of epsilon higher.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_double_factorial.h1"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_double_factorial.testing"></a></span><a class="link" href="sf_double_factorial.html#math_toolkit.factorials.sf_double_factorial.testing">Testing</a>
+ </h5>
+<p>
+ The spot tests for the double factorial use data generated by functions.wolfram.com.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_double_factorial.h2"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_double_factorial.implementation"></a></span><a class="link" href="sf_double_factorial.html#math_toolkit.factorials.sf_double_factorial.implementation">Implementation</a>
+ </h5>
+<p>
+ The double factorial is implemented in terms of the factorial and gamma functions
+ using the relations:
+ </p>
+<p>
+ (2n)!! = 2<sup>n </sup> * n!
+ </p>
+<p>
+ (2n+1)!! = (2n+1)! / (2<sup>n </sup> n!)
+ </p>
+<p>
+ and
+ </p>
+<p>
+ (2n-1)!! = Γ((2n+1)/2) * 2<sup>n </sup> / sqrt(pi)
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sf_factorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sf_rising_factorial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_factorial.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_factorial.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,183 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Factorial</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../factorials.html" title="Factorials and Binomial Coefficients">
+<link rel="prev" href="../factorials.html" title="Factorials and Binomial Coefficients">
+<link rel="next" href="sf_double_factorial.html" title="Double Factorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../factorials.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sf_double_factorial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_factorials_sf_factorial">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.factorials.sf_factorial"></a><a class="link" href="sf_factorial.html" title="Factorial">Factorial</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.factorials.sf_factorial.h0"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_factorial.synopsis"></a></span><a class="link" href="sf_factorial.html#math_toolkit.factorials.sf_factorial.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">factorials</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">factorial</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">factorial</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">unchecked_factorial</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">max_factorial</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.factorials.sf_factorial.h1"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_factorial.description"></a></span><a class="link" href="sf_factorial.html#math_toolkit.factorials.sf_factorial.description">Description</a>
+ </h5>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The functions described below are templates where the template argument
+ T CANNOT be deduced from the arguments passed to the function. Therefore
+ if you write something like:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">factorial</span><span class="special">(</span><span class="number">2</span><span class="special">);</span></code>
+ </p>
+<p>
+ You will get a (perhaps perplexing) compiler error, ususally indicating
+ that there is no such function to be found. Instead you need to specify
+ the return type explicity and write:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">factorial</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="number">2</span><span class="special">);</span></code>
+ </p>
+<p>
+ So that the return type is known.
+ </p>
+<p>
+ Furthermore, the template argument must be a real-valued type such as
+ <code class="computeroutput"><span class="keyword">float</span></code> or <code class="computeroutput"><span class="keyword">double</span></code>
+ and not an integer type - that would overflow far too easily for quite
+ small values of parameter <code class="computeroutput"><span class="identifier">i</span></code>!
+ </p>
+<p>
+ The source code <code class="computeroutput"><span class="keyword">static_assert</span></code>
+ and comment just after the will be:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(!</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_integral</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">value</span><span class="special">);</span>
+<span class="comment">// factorial<unsigned int>(n) is not implemented</span>
+<span class="comment">// because it would overflow integral type T for too small n</span>
+<span class="comment">// to be useful. Use instead a floating-point type,</span>
+<span class="comment">// and convert to an unsigned type if essential, for example:</span>
+<span class="comment">// unsigned int nfac = static_cast<unsigned int>(factorial<double>(n));</span>
+<span class="comment">// See factorial documentation for more detail.</span>
+</pre>
+</td></tr>
+</table></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">factorial</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">factorial</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns <code class="literal">i!</code>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ For <code class="literal">i <= max_factorial<T>::value</code> this is implemented
+ by table lookup, for larger values of <code class="literal">i</code>, this function
+ is implemented in terms of <a class="link" href="../sf_gamma/tgamma.html" title="Gamma">tgamma</a>.
+ </p>
+<p>
+ If <code class="literal">i</code> is so large that the result can not be represented
+ in type T, then calls <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">unchecked_factorial</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="literal">i!</code>.
+ </p>
+<p>
+ Internally this function performs table lookup of the result. Further it
+ performs no range checking on the value of i: it is up to the caller to ensure
+ that <code class="literal">i <= max_factorial<T>::value</code>. This function
+ is intended to be used inside inner loops that require fast table lookup
+ of factorials, but requires care to ensure that argument <code class="literal">i</code>
+ never grows too large.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">max_factorial</span>
+<span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="identifier">value</span> <span class="special">=</span> <span class="identifier">X</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ This traits class defines the largest value that can be passed to <code class="literal">unchecked_factorial</code>.
+ The member <code class="computeroutput"><span class="identifier">value</span></code> can be used
+ where integral constant expressions are required: for example to define the
+ size of further tables that depend on the factorials.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_factorial.h2"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_factorial.accuracy"></a></span><a class="link" href="sf_factorial.html#math_toolkit.factorials.sf_factorial.accuracy">Accuracy</a>
+ </h5>
+<p>
+ For arguments smaller than <code class="computeroutput"><span class="identifier">max_factorial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">value</span></code> the result should be correctly rounded.
+ For larger arguments the accuracy will be the same as for <a class="link" href="../sf_gamma/tgamma.html" title="Gamma">tgamma</a>.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_factorial.h3"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_factorial.testing"></a></span><a class="link" href="sf_factorial.html#math_toolkit.factorials.sf_factorial.testing">Testing</a>
+ </h5>
+<p>
+ Basic sanity checks and spot values to verify the data tables: the main tests
+ for the <a class="link" href="../sf_gamma/tgamma.html" title="Gamma">tgamma</a> function
+ handle those cases already.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_factorial.h4"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_factorial.implementation"></a></span><a class="link" href="sf_factorial.html#math_toolkit.factorials.sf_factorial.implementation">Implementation</a>
+ </h5>
+<p>
+ The factorial function is table driven for small arguments, and is implemented
+ in terms of <a class="link" href="../sf_gamma/tgamma.html" title="Gamma">tgamma</a> for
+ larger arguments.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../factorials.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sf_double_factorial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_falling_factorial.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_falling_factorial.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,100 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Falling Factorial</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../factorials.html" title="Factorials and Binomial Coefficients">
+<link rel="prev" href="sf_rising_factorial.html" title="Rising Factorial">
+<link rel="next" href="sf_binomial.html" title="Binomial Coefficients">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sf_rising_factorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sf_binomial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_factorials_sf_falling_factorial">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.factorials.sf_falling_factorial"></a><a class="link" href="sf_falling_factorial.html" title="Falling Factorial">Falling
+ Factorial</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">factorials</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">falling_factorial</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">falling_factorial</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns the falling factorial of <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>i</em></span>:
+ </p>
+<p>
+ falling_factorial(x, i) = x(x-1)(x-2)(x-3)...(x-i+1)
+ </p>
+<p>
+ Note that this function is only defined for positive <span class="emphasis"><em>i</em></span>,
+ hence the <code class="computeroutput"><span class="keyword">unsigned</span></code> second argument.
+ Argument <span class="emphasis"><em>x</em></span> can be either positive or negative however.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ May return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ if the result is too large to represent in type T.
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the type of the result is <code class="computeroutput"><span class="keyword">double</span></code> if T is an integer type, otherwise
+ the type of the result is T.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_falling_factorial.h0"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_falling_factorial.accuracy"></a></span><a class="link" href="sf_falling_factorial.html#math_toolkit.factorials.sf_falling_factorial.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The accuracy will be the same as the <a class="link" href="../sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions">tgamma_delta_ratio</a>
+ function.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_falling_factorial.h1"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_falling_factorial.testing"></a></span><a class="link" href="sf_falling_factorial.html#math_toolkit.factorials.sf_falling_factorial.testing">Testing</a>
+ </h5>
+<p>
+ The spot tests for the falling factorials use data generated by functions.wolfram.com.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_falling_factorial.h2"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_falling_factorial.implementation"></a></span><a class="link" href="sf_falling_factorial.html#math_toolkit.factorials.sf_falling_factorial.implementation">Implementation</a>
+ </h5>
+<p>
+ Rising and falling factorials are implemented as ratios of gamma functions
+ using <a class="link" href="../sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions">tgamma_delta_ratio</a>.
+ Optimisations for small integer arguments are handled internally by that
+ function.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sf_rising_factorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sf_binomial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_rising_factorial.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/factorials/sf_rising_factorial.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,104 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rising Factorial</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../factorials.html" title="Factorials and Binomial Coefficients">
+<link rel="prev" href="sf_double_factorial.html" title="Double Factorial">
+<link rel="next" href="sf_falling_factorial.html" title="Falling Factorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sf_double_factorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sf_falling_factorial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_factorials_sf_rising_factorial">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.factorials.sf_rising_factorial"></a><a class="link" href="sf_rising_factorial.html" title="Rising Factorial">Rising Factorial</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">factorials</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">rising_factorial</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">rising_factorial</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns the rising factorial of <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>i</em></span>:
+ </p>
+<p>
+ rising_factorial(x, i) = Γ(x + i) / Γ(x);
+ </p>
+<p>
+ or
+ </p>
+<p>
+ rising_factorial(x, i) = x(x+1)(x+2)(x+3)...(x+i-1)
+ </p>
+<p>
+ Note that both <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>i</em></span> can be negative
+ as well as positive.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ May return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ if the result is too large to represent in type T.
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the type of the result is <code class="computeroutput"><span class="keyword">double</span></code> if T is an integer type, otherwise
+ the type of the result is T.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_rising_factorial.h0"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_rising_factorial.accuracy"></a></span><a class="link" href="sf_rising_factorial.html#math_toolkit.factorials.sf_rising_factorial.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The accuracy will be the same as the <a class="link" href="../sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions">tgamma_delta_ratio</a>
+ function.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_rising_factorial.h1"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_rising_factorial.testing"></a></span><a class="link" href="sf_rising_factorial.html#math_toolkit.factorials.sf_rising_factorial.testing">Testing</a>
+ </h5>
+<p>
+ The spot tests for the rising factorials use data generated by functions.wolfram.com.
+ </p>
+<h5>
+<a name="math_toolkit.factorials.sf_rising_factorial.h2"></a>
+ <span class="phrase"><a name="math_toolkit.factorials.sf_rising_factorial.implementation"></a></span><a class="link" href="sf_rising_factorial.html#math_toolkit.factorials.sf_rising_factorial.implementation">Implementation</a>
+ </h5>
+<p>
+ Rising and falling factorials are implemented as ratios of gamma functions
+ using <a class="link" href="../sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions">tgamma_delta_ratio</a>.
+ Optimisations for small integer arguments are handled internally by that
+ function.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sf_double_factorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sf_falling_factorial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/fp_facets.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/fp_facets.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,82 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Facets for Floating-Point Infinities and NaNs</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../utils.html" title="Chapter 4. Floating Point Utilities">
+<link rel="prev" href="sign_functions.html" title="Sign Manipulation Functions">
+<link rel="next" href="fp_facets/facets_intro.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sign_functions.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="fp_facets/facets_intro.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_fp_facets">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.fp_facets"></a><a class="link" href="fp_facets.html" title="Facets for Floating-Point Infinities and NaNs">Facets for Floating-Point Infinities
+ and NaNs</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dt><span class="section">Examples</span></dt>
+<dt><span class="section">Portability</span></dt>
+<dt><span class="section">Design Rationale</span></dt>
+</dl></div>
+<h5>
+<a name="math_toolkit.fp_facets.h0"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.synopsis"></a></span><a class="link" href="fp_facets.html#math_toolkit.fp_facets.synopsis">Synopsis</a>
+ </h5>
+<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="comment">// Values for flags. </span>
+ <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">legacy</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">signed_zero</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">trap_infinity</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">trap_nan</span><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special"><</span>
+ <span class="keyword">class</span> <span class="identifier">CharType</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">OutputIterator</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostreambuf_iterator</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">nonfinite_num_put</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">num_put</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">,</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">nonfinite_num_put</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special"><</span>
+ <span class="keyword">class</span> <span class="identifier">CharType</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">InputIterator</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">istreambuf_iterator</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">nonfinite_num_get</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">num_get</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">,</span> <span class="identifier">InputIterator</span><span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">nonfinite_num_get</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span> <span class="comment">// legacy, sign_zero ...</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost namespace math</span>
+</pre>
+<p>
+ To use these facets
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">nonfinite_num_facets</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sign_functions.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="fp_facets/facets_intro.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/examples.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/examples.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,246 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Examples</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../fp_facets.html" title="Facets for Floating-Point Infinities and NaNs">
+<link rel="prev" href="reference.html" title="Reference">
+<link rel="next" href="portability.html" title="Portability">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="reference.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="portability.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_fp_facets_examples">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.fp_facets.examples"></a><a class="link" href="examples.html" title="Examples">Examples</a>
+</h3></div></div></div>
+<h6>
+<a name="math_toolkit.fp_facets.examples.h0"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.examples.simple_example_with_std_stringst"></a></span><a class="link" href="examples.html#math_toolkit.fp_facets.examples.simple_example_with_std_stringst">Simple
+ example with std::stringstreams</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">locale</span> <span class="identifier">old_locale</span><span class="special">;</span>
+<span class="identifier">locale</span> <span class="identifier">tmp_locale</span><span class="special">(</span><span class="identifier">old_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_put</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+<span class="identifier">locale</span> <span class="identifier">new_locale</span><span class="special">(</span><span class="identifier">tmp_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_get</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+</pre>
+<pre class="programlisting"><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>
+<span class="identifier">ss</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">new_locale</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">inf</span> <span class="special">=</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">();</span>
+<span class="identifier">ss</span> <span class="special"><<</span> <span class="identifier">inf</span><span class="special">;</span> <span class="comment">// Write out.</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special">==</span> <span class="string">"inf"</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="identifier">ss</span> <span class="special">>></span> <span class="identifier">r</span><span class="special">;</span> <span class="comment">// Read back in.</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">inf</span> <span class="special">==</span> <span class="identifier">r</span><span class="special">);</span> <span class="comment">// Confirms that the double values really are identical.</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"infinity output was "</span> <span class="special"><<</span> <span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"infinity input was "</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// But the string representation of r displayed will be the native type</span>
+<span class="comment">// because, when it was constructed, cout had NOT been imbued</span>
+<span class="comment">// with the new locale containing the nonfinite_numput facet.</span>
+<span class="comment">// So the cout output will be "1.#INF on MS platforms</span>
+<span class="comment">// and may be "inf" or other string representation on other platforms.</span>
+</pre>
+<h6>
+<a name="math_toolkit.fp_facets.examples.h1"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.examples.use_with_lexical_cast"></a></span><a class="link" href="examples.html#math_toolkit.fp_facets.examples.use_with_lexical_cast">Use with
+ lexical_cast</a>
+ </h6>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ From Boost 1.48, lexical_cast no longer uses stringstreams internally,
+ and is now able to handle infinities and NaNs natively on most platforms.
+ </p></td></tr>
+</table></div>
+<p>
+ Without using a new locale that contains the nonfinite facets, previous versions
+ of <code class="computeroutput"><span class="identifier">lexical_cast</span></code> using stringstream
+ were not portable (and often failed) if nonfinite values are found.
+ </p>
+<pre class="programlisting"><span class="identifier">locale</span> <span class="identifier">old_locale</span><span class="special">;</span>
+<span class="identifier">locale</span> <span class="identifier">tmp_locale</span><span class="special">(</span><span class="identifier">old_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_put</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+<span class="identifier">locale</span> <span class="identifier">new_locale</span><span class="special">(</span><span class="identifier">tmp_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_get</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+</pre>
+<p>
+ Although other examples imbue individual streams with the new locale, for
+ the streams constructed inside lexical_cast, it was necesary to assign to
+ a global locale.
+ </p>
+<pre class="programlisting"><span class="identifier">locale</span><span class="special">::</span><span class="identifier">global</span><span class="special">(</span><span class="identifier">new_locale</span><span class="special">);</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="identifier">lexical_cast</span></code> then works as
+ expected, even with infinity and NaNs.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="string">"inf"</span><span class="special">);</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">x</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">:</span><span class="identifier">limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">());</span>
+
+<span class="identifier">string</span> <span class="identifier">s</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="identifier">string</span><span class="special">>(</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">());</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s</span> <span class="special">==</span> <span class="string">"inf"</span><span class="special">);</span>
+</pre>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If you use stringstream inside your functions, you may still need to use
+ a global locale to handle nonfinites correctly. Or you need to imbue your
+ stringstream with suitable get and put facets.
+ </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="../../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ You should be aware that the C++ specification does not explicitly require
+ that input from decimal digits strings converts with rounding to the nearest
+ representable floating-point binary value. (In contrast, decimal digits
+ read by the compiler, for example by an assignment like <code class="computeroutput"><span class="keyword">double</span>
+ <span class="identifier">d</span> <span class="special">=</span>
+ <span class="number">1.234567890123456789</span></code>, are guaranteed
+ to assign the nearest representable value to double d). This implies that,
+ no matter how many decimal digits you provide, there is a potential uncertainty
+ of 1 least significant bit in the resulting binary value.
+ </p></td></tr>
+</table></div>
+<p>
+ See <a href="http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding" target="_top">for
+ more information on <span class="emphasis"><em>nearest representable</em></span> and <span class="emphasis"><em>rounding</em></span></a>.
+ </p>
+<p>
+ Most iostream libraries do in fact achieve the desirable <span class="emphasis"><em>nearest
+ representable floating-point binary value</em></span> for all values of input.
+ However one popular STL library does not quite achieve this for 64-bit doubles.
+ See <a href="http://connect.microsoft.com/VisualStudio/feedback/details/98770/decimal-digit-string-input-to-double-may-be-1-bit-wrong" target="_top">Decimal
+ digit string input to double may be 1 bit wrong</a> for the bizarre full
+ details.
+ </p>
+<p>
+ If you are expecting to 'round-trip' <code class="computeroutput"><span class="identifier">lexical_cast</span></code>
+ or <code class="computeroutput"><span class="identifier">serialization</span></code>, for example
+ archiving and loading, and want to be <span class="bold"><strong>absolutely certain
+ that you will always get an exactly identical double value binary pattern</strong></span>,
+ you should use the suggested 'workaround' below that is believed to work
+ on all platforms.
+ </p>
+<p>
+ You should output using all potentially significant decimal digits, by setting
+ stream precision to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span></code>, (or for the appropriate floating-point
+ type, if not double) and crucially, <span class="bold"><strong>require <code class="computeroutput"><span class="identifier">scientific</span></code> format</strong></span>, not <code class="computeroutput"><span class="identifier">fixed</span></code> or automatic (default), for example:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">output_value</span> <span class="special">=</span> <span class="identifier">any</span> <span class="identifier">value</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">s</span><span class="special">;</span>
+<span class="identifier">s</span> <span class="special"><<</span> <span class="identifier">setprecison</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="identifier">output_value</span><span class="special">;</span>
+<span class="identifier">s</span> <span class="special">>></span> <span class="identifier">input_value</span><span class="special">;</span>
+</pre>
+<h5>
+<a name="math_toolkit.fp_facets.examples.h2"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.examples.use_with_serialization_archives"></a></span><a class="link" href="examples.html#math_toolkit.fp_facets.examples.use_with_serialization_archives">Use
+ with serialization archives</a>
+ </h5>
+<p>
+ It is vital that the same locale is used when an archive is saved and when
+ it is loaded. Otherwise, loading the archive may fail. By default, archives
+ are saved and loaded with a classic C locale with a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">archive</span><span class="special">::</span><span class="identifier">codecvt_null</span></code>
+ facet added. Normally you do not have to worry about that.
+ </p>
+<p>
+ The constructors for the archive classes, as a side-effect, imbue the stream
+ with such a locale. However, if you want to use the facets <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code> and <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code>
+ with archives, then you have to manage the locale manually. That is done
+ by calling the archive constructor with the flag <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">archive</span><span class="special">::</span><span class="identifier">no_codecvt</span></code>,
+ thereby ensuring that the archive constructor will <span class="bold"><strong>not
+ imbue the stream with a new locale</strong></span>.
+ </p>
+<p>
+ The following code shows how to use <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>
+ with a <code class="computeroutput"><span class="identifier">text_oarchive</span></code>.
+ </p>
+<pre class="programlisting"><span class="identifier">locale</span> <span class="identifier">default_locale</span><span class="special">(</span><span class="identifier">locale</span><span class="special">::</span><span class="identifier">classic</span><span class="special">(),</span> <span class="keyword">new</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">archive</span><span class="special">::</span><span class="identifier">codecvt_null</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+<span class="identifier">locale</span> <span class="identifier">my_locale</span><span class="special">(</span><span class="identifier">default_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_put</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+
+<span class="identifier">ofstream</span> <span class="identifier">ofs</span><span class="special">(</span><span class="string">"test.txt"</span><span class="special">);</span>
+<span class="identifier">ofs</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">my_locale</span><span class="special">);</span>
+
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">archive</span><span class="special">::</span><span class="identifier">text_oarchive</span> <span class="identifier">oa</span><span class="special">(</span><span class="identifier">ofs</span><span class="special">,</span> <span class="identifier">no_codecvt</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">();</span>
+<span class="identifier">oa</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">;</span>
+</pre>
+<p>
+ The same method works with <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code>
+ and <code class="computeroutput"><span class="identifier">text_iarchive</span></code>.
+ </p>
+<p>
+ If you use the <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>
+ with <code class="computeroutput"><span class="identifier">trap_infinity</span></code> and/or
+ <code class="computeroutput"><span class="identifier">trap_nan</span></code> flag with a serialization
+ archive, then you must set the exception mask of the stream. Serialization
+ archives do not check the stream state.
+ </p>
+<h6>
+<a name="math_toolkit.fp_facets.examples.h3"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.examples.other_examples"></a></span><a class="link" href="examples.html#math_toolkit.fp_facets.examples.other_examples">Other
+ examples</a>
+ </h6>
+<p>
+ nonfinite_facet_simple.cpp
+ give some more simple demonstrations of the difference between using classic
+ C locale and constructing a C99 infinty and NaN compliant locale for input
+ and output.
+ </p>
+<p>
+ See nonfinite_facet_sstream.cpp
+ for this example of use with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span></code>s.
+ </p>
+<p>
+ For an example of how to enforce the MSVC 'legacy' "1.#INF" and
+ "1.#QNAN" representations of infinity and NaNs, for input and output,
+ see nonfinite_legacy.cpp.
+ </p>
+<p>
+ Treatment of signaling NaN is demonstrated at ../../example/nonfinite_signaling_NaN.cpp
+ </p>
+<p>
+ Example ../../example/nonfinite_loopback_ok.cpp
+ shows loopback works OK.
+ </p>
+<p>
+ Example ../../example/nonfinite_num_facet.cpp
+ shows output and re-input of various finite and nonfinite values.
+ </p>
+<p>
+ A simple example of trapping nonfinite output is at nonfinite_num_facet_trap.cpp.
+ </p>
+<p>
+ A very basic example of using Boost.Archive is at ../../example/nonfinite_serialization_archives.cpp.
+ </p>
+<p>
+ A full demonstration of serialization by Francois Mauger is at ../../example/nonfinite_num_facet_serialization.cpp
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="reference.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="portability.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/facets_intro.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/facets_intro.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,370 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Introduction</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../fp_facets.html" title="Facets for Floating-Point Infinities and NaNs">
+<link rel="prev" href="../fp_facets.html" title="Facets for Floating-Point Infinities and NaNs">
+<link rel="next" href="reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../fp_facets.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_fp_facets_facets_intro">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.fp_facets.facets_intro"></a><a class="link" href="facets_intro.html" title="Introduction">Introduction</a>
+</h3></div></div></div>
+<h6>
+<a name="math_toolkit.fp_facets.facets_intro.h0"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.facets_intro.the_problem"></a></span><a class="link" href="facets_intro.html#math_toolkit.fp_facets.facets_intro.the_problem">The
+ Problem</a>
+ </h6>
+<p>
+ The C++98 standard does not specify how <span class="emphasis"><em>infinity</em></span> and
+ <span class="emphasis"><em>NaN</em></span> are represented in text streams. As a result, different
+ platforms use different string representations. This can cause undefined
+ behavior when text files are moved between different platforms. Some platforms
+ cannot even input parse their own output! So 'route-tripping' or loopback
+ of output to input is not possible. For instance, the following test fails
+ with MSVC:
+ </p>
+<pre class="programlisting"><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">inf</span> <span class="special">=</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">();</span>
+<span class="keyword">double</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="identifier">ss</span> <span class="special"><<</span> <span class="identifier">inf</span><span class="special">;</span> <span class="comment">// Write out.</span>
+<span class="identifier">ss</span> <span class="special">>></span> <span class="identifier">r</span><span class="special">;</span> <span class="comment">// Read back in.</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"infinity output was "</span> <span class="special"><<</span> <span class="identifier">inf</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1.#INF</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"infinity input was "</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1</span>
+
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">inf</span> <span class="special">==</span> <span class="identifier">y</span><span class="special">);</span> <span class="comment">// Fails!</span>
+</pre>
+<h6>
+<a name="math_toolkit.fp_facets.facets_intro.h1"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.facets_intro.the_solution"></a></span><a class="link" href="facets_intro.html#math_toolkit.fp_facets.facets_intro.the_solution">The
+ Solution</a>
+ </h6>
+<p>
+ The facets <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>
+ and <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code> format
+ and parse all floating-point numbers, including <code class="computeroutput"><span class="identifier">infinity</span></code>
+ and <code class="computeroutput"><span class="identifier">NaN</span></code>, in a consistent
+ and portable manner.
+ </p>
+<p>
+ The following test succeeds with MSVC.
+ </p>
+<pre class="programlisting"><span class="identifier">locale</span> <span class="identifier">old_locale</span><span class="special">;</span>
+<span class="identifier">locale</span> <span class="identifier">tmp_locale</span><span class="special">(</span><span class="identifier">old_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_put</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+<span class="identifier">locale</span> <span class="identifier">new_locale</span><span class="special">(</span><span class="identifier">tmp_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_get</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+</pre>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ To add two facets, <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>
+ and <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code>,
+ you may have to add one at a time, using a temporary locale.
+ </p>
+<p>
+ Or you can create a new locale in one step
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">new_locale</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span><span class="special">(),</span> <span class="keyword">new</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">nonfinite_num_put</span><span class="special"><</span><span class="keyword">char</span><span class="special">>),</span> <span class="keyword">new</span> <span class="identifier">boost</span><span class=
"special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">nonfinite_num_get</span><span class="special"><</span><span class="keyword">char</span><span class="special">>));</span></code>
+ </p>
+<p>
+ and, for example, use it to imbue an input and output stringstream.
+ </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="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ To just change an input or output stream, you can concisely write <code class="computeroutput"><span class="identifier">cout</span><span class="special">.</span><span class="identifier">imbue</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span><span class="special">(),</span> <span class="keyword">new</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">nonfinite_num_put</span><span class="special"><</span><span class="keyword">char</span><span class="special">>));</span></code> or <code class="computeroutput"><span class="identifier">cin</span><span class="special">.</span><span class="identifier">imbue</span> <span class="special">(</span><span class="identif
ier">std</span><span class="special">::</span><span class="identifier">locale</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span><span class="special">(),</span> <span class="keyword">new</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">nonfinite_num_get</span><span class="special"><</span><span class="keyword">char</span><span class="special">>));</span></code>
+ </p></td></tr>
+</table></div>
+<pre class="programlisting"><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>
+<span class="identifier">ss</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">new_locale</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">inf</span> <span class="special">=</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">();</span>
+<span class="identifier">ss</span> <span class="special"><<</span> <span class="identifier">inf</span><span class="special">;</span> <span class="comment">// Write out.</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special">==</span> <span class="string">"inf"</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="identifier">ss</span> <span class="special">>></span> <span class="identifier">r</span><span class="special">;</span> <span class="comment">// Read back in.</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">inf</span> <span class="special">==</span> <span class="identifier">r</span><span class="special">);</span> <span class="comment">// Confirms that the double values really are identical.</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"infinity output was "</span> <span class="special"><<</span> <span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"infinity input was "</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// But the string representation of r displayed will be the native type</span>
+<span class="comment">// because, when it was constructed, cout had NOT been imbued</span>
+<span class="comment">// with the new locale containing the nonfinite_numput facet.</span>
+<span class="comment">// So the cout output will be "1.#INF on MS platforms</span>
+<span class="comment">// and may be "inf" or other string representation on other platforms.</span>
+</pre>
+<h5>
+<a name="math_toolkit.fp_facets.facets_intro.h2"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.facets_intro.c_0x_standard_for_output_of_infi"></a></span><a class="link" href="facets_intro.html#math_toolkit.fp_facets.facets_intro.c_0x_standard_for_output_of_infi">C++0X
+ standard for output of infinity and NaN</a>
+ </h5>
+<p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf" target="_top">C++0X
+ (final) draft standard</a> does not explicitly specify the representation
+ (and input) of nonfinite values, leaving it implementation-defined. So without
+ some specific action, input and output of nonfinite values is not portable.
+ </p>
+<h5>
+<a name="math_toolkit.fp_facets.facets_intro.h3"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.facets_intro.c99_standard_for_output_of_infin"></a></span><a class="link" href="facets_intro.html#math_toolkit.fp_facets.facets_intro.c99_standard_for_output_of_infin">C99
+ standard for output of infinity and NaN</a>
+ </h5>
+<p>
+ The <a href="http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf" target="_top">C99
+ standard</a> <span class="bold"><strong>does</strong></span> specify how infinity
+ and NaN are formatted by printf and similar output functions, and parsed
+ by scanf and similar input functions.
+ </p>
+<p>
+ The following string representations are used:
+ </p>
+<div class="table">
+<a name="math_toolkit.fp_facets.facets_intro.c99_representation_of_infinity_a"></a><p class="title"><b>Table 4.1. C99 Representation of Infinity and NaN</b></p>
+<div class="table-contents"><table class="table" summary="C99 Representation of Infinity and NaN">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ number
+ </p>
+ </th>
+<th>
+ <p>
+ string
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Positive infinity
+ </p>
+ </td>
+<td>
+ <p>
+ "inf" or "infinity"
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Positive NaN
+ </p>
+ </td>
+<td>
+ <p>
+ "nan" or "nan(...)"
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Negative infinity
+ </p>
+ </td>
+<td>
+ <p>
+ "-inf" or "-infinity"
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Negative NaN
+ </p>
+ </td>
+<td>
+ <p>
+ "-nan" or "-nan(...)"
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ So following C99 provides a sensible 'standard' way of handling input and
+ output of nonfinites in C++, and this implementation follows most of these
+ formats.
+ </p>
+<h6>
+<a name="math_toolkit.fp_facets.facets_intro.h4"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.facets_intro.signaling_nans"></a></span><a class="link" href="facets_intro.html#math_toolkit.fp_facets.facets_intro.signaling_nans">Signaling
+ NaNs</a>
+ </h6>
+<p>
+ A particular type of NaN is the signaling NaN. The usual mechanism of signaling
+ is by raising a floating-point exception. Signaling NaNs are defined by
+ <a href="http://en.wikipedia.org/wiki/IEEE_floating-point_standard" target="_top">IEEE
+ 754-2008</a>.
+ </p>
+<p>
+ Floating-point values with layout <span class="emphasis"><em>s</em></span>111 1111 1<span class="emphasis"><em>a</em></span>xx
+ xxxx xxxx xxxx xxxx xxxx where <span class="emphasis"><em>s</em></span> is the sign, <span class="emphasis"><em>x</em></span>
+ is the payload, and bit <span class="emphasis"><em>a</em></span> determines the type of NaN.
+ </p>
+<p>
+ If bit <span class="emphasis"><em>a</em></span> = 1, it is a quiet NaN.
+ </p>
+<p>
+ If bit <span class="emphasis"><em>a</em></span> is zero and the payload <span class="emphasis"><em>x</em></span>
+ is nonzero, then it is a signaling NaN.
+ </p>
+<p>
+ Although there has been theoretical interest in the ability of a signaling
+ NaN to raise an exception, for example to prevent use of an uninitialised
+ variable, in practice there appears to be no useful application of signaling
+ NaNs for most current processors. <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf" target="_top">C++0X
+ 18.3.2.2</a> still specifies a (implementation-defined) representation
+ for signaling NaN, and <code class="computeroutput"><span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">bool</span> <span class="identifier">has_signaling_NaN</span></code> a method of checking
+ if a floating-point type has a representation for signaling NaN.
+ </p>
+<p>
+ But in practice, most platforms treat signaling NaNs in the same as quiet
+ NaNs. So, for example, they are represented by "nan" on output
+ in C99
+ format, and output as <code class="computeroutput"><span class="number">1.</span><span class="special">#</span><span class="identifier">QNAN</span></code> by Microsoft compilers.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The C99 standard does not distinguish between the quiet NaN and signaling
+ NaN values. A quiet NaN propagates through almost every arithmetic operation
+ without raising a floating-point exception; a signaling NaN generally raises
+ a floating-point exception when occurring as an arithmetic operand.
+ </p>
+<p>
+ C99 specification does not define the behavior of signaling NaNs. NaNs
+ created by IEC 60559 operations are always quiet. Therefore this implementation
+ follows C99, and treats the signaling NaN bit as just a part of the NaN
+ payload field. So this implementation does not distinguish between the
+ two classes of NaN.
+ </p>
+</td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ An implementation may give zero and non-numeric values (such as infinities
+ and NaNs) a sign or may leave them unsigned. Wherever such values are unsigned,
+ any requirement in the C99 Standard to retrieve the sign shall produce
+ an unspecified sign, and any requirement to set the sign shall be ignored.
+ </p>
+<p>
+ This might apply to user-defined types, but in practice built-in floating-point
+ 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> have well-behaved signs.
+ </p>
+</td></tr>
+</table></div>
+<p>
+ The numbers can be of type <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>. An optional + sign can be
+ used with positive numbers (controlled by ios manipulator <code class="computeroutput"><span class="identifier">showpos</span></code>).
+ The function <code class="computeroutput"><span class="identifier">printf</span></code> and similar
+ C++ functions use standard formatting flags to put all lower or all upper
+ case (controlled by <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios</span></code> manipulator <code class="computeroutput"><span class="identifier">uppercase</span></code>
+ and <code class="computeroutput"><span class="identifier">lowercase</span></code>).
+ </p>
+<p>
+ The function <code class="computeroutput"><span class="identifier">scanf</span></code> and similar
+ input functions are case-insensitive.
+ </p>
+<p>
+ The dots in <code class="computeroutput"><span class="identifier">nan</span><span class="special">(...)</span></code>
+ stand for an arbitrary string. The meaning of that string is implementation
+ dependent. It can be used to convey extra information about the NaN, from
+ the 'payload'. A particular value of the payload might be used to indicate
+ a <span class="emphasis"><em>missing value</em></span>, for example.
+ </p>
+<p>
+ This library uses the string representations specified by the C99 standard.
+ </p>
+<p>
+ An example of an implementation that optionally includes the NaN payload
+ information is at <a href="http://publib.boulder.ibm.com/infocenter/zos/v1r10/index.jsp?topic=/com.ibm.zos.r10.bpxbd00/fprints.htm" target="_top">AIX
+ NaN fprintf</a>. That implementation specifies for Binary Floating Point
+ NANs:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ A NaN ordinal sequence is a left-parenthesis character '(', followed
+ by a digit sequence representing an integer n, where 1 <= n <=
+ INT_MAX-1, followed by a right-parenthesis character ')'.
+ </li>
+<li class="listitem">
+ The integer value, n, is determined by the fraction bits of the NaN argument
+ value as follows:
+ </li>
+<li class="listitem">
+ For a signalling NaN value, NaN fraction bits are reversed (left to right)
+ to produce bits (right to left) of an even integer value, 2*n. Then formatted
+ output functions produce a (signalling) NaN ordinal sequence corresponding
+ to the integer value n.
+ </li>
+<li class="listitem">
+ For a quiet NaN value, NaN fraction bits are reversed (left to right)
+ to produce bits (right to left) of an odd integer value, 2*n-1. Then
+ formatted output functions produce a (quiet) NaN ordinal sequence corresponding
+ to the integer value n.
+ </li>
+</ul></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This implementation does not (yet) provide output of, or access to, the
+ NaN payload.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../fp_facets.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/portability.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/portability.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,41 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Portability</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../fp_facets.html" title="Facets for Floating-Point Infinities and NaNs">
+<link rel="prev" href="examples.html" title="Examples">
+<link rel="next" href="rationale.html" title="Design Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="examples.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_fp_facets_portability">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.fp_facets.portability"></a><a class="link" href="portability.html" title="Portability">Portability</a>
+</h3></div></div></div>
+<p>
+ This library uses the floating-point number classification and sign-bit from
+ Boost.Math library, and should work on all platforms where that library works.
+ See the portability information for that library.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="examples.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/rationale.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/rationale.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Design Rationale</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../fp_facets.html" title="Facets for Floating-Point Infinities and NaNs">
+<link rel="prev" href="portability.html" title="Portability">
+<link rel="next" href="../next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="portability.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../next_float.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_fp_facets_rationale">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.fp_facets.rationale"></a><a class="link" href="rationale.html" title="Design Rationale">Design Rationale</a>
+</h3></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The flags are implemented as a const data member of the facet. Facets
+ are reference counted, and locales can share facets. Therefore changing
+ the flags of a facet would have effects that are hard to predict. An
+ alternative design would be to implement the flags using <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">xalloc</span></code> and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">iword</span></code>.
+ Then one could safely modify the flags, and one could define manipulators
+ that do so. However, for that to work with dynamically linked libraries,
+ a <code class="computeroutput"><span class="special">.</span><span class="identifier">cpp</span></code>
+ file would have to be added to the library. It was judged be more desirable
+ to have a headers only library, than to have mutable flags and manipulators.
+ </li>
+<li class="listitem">
+ The facet <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>
+ throws an exception when the <code class="computeroutput"><span class="identifier">trap_infinity</span></code>
+ or <code class="computeroutput"><span class="identifier">trap_nan</span></code> flag is set
+ and an attempt is made to format infinity or NaN. It would be better
+ if the facet set the fail bit of the stream. However, facets derived
+ from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">num_put</span></code> do not have access to the stream
+ state.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="portability.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../next_float.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/reference.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/fp_facets/reference.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,481 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reference</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../fp_facets.html" title="Facets for Floating-Point Infinities and NaNs">
+<link rel="prev" href="facets_intro.html" title="Introduction">
+<link rel="next" href="examples.html" title="Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="facets_intro.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_fp_facets_reference">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.fp_facets.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
+</h3></div></div></div>
+<h6>
+<a name="math_toolkit.fp_facets.reference.h0"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.reference.the_facet_nonfinite_num_put"></a></span><a class="link" href="reference.html#math_toolkit.fp_facets.reference.the_facet_nonfinite_num_put">The
+ Facet <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code></a>
+ </h6>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span>
+ <span class="keyword">class</span> <span class="identifier">CharType</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OutputIterator</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostreambuf_iterator</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">></span>
+ <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">nonfinite_num_put</span><span class="special">;</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="keyword">class</span> <span class="identifier">nonfinite_num_put</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">,</span> <span class="identifier">OutputIterator</span><span class="special">></span></code> is derived from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">num_put</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">,</span> <span class="identifier">OutputIterator</span><span class="special">></span></code>. Thus it is a facet that formats numbers.
+ The first template argument is the character type of the formatted strings,
+ usually <code class="computeroutput"><span class="keyword">char</span></code> or <code class="computeroutput"><span class="keyword">wchar_t</span></code>. The second template argument is the
+ type of iterator used to write the strings. It is required to be an output
+ iterator. Usually the default <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostreambuf_iterator</span></code>
+ is used. The public interface of the class consists of a single constructor
+ only:
+ </p>
+<pre class="programlisting"><span class="identifier">nonfinite_num_put</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span>
+</pre>
+<p>
+ The flags argument (effectively optional because a default of <code class="computeroutput"> <span class="identifier">no_flags</span></code> is provided) is discussed below.
+ The class template <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>
+ is defined in the header <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">nonfinite_num_facets</span><span class="special">.</span><span class="identifier">hpp</span></code> and lives in the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span></code>.
+ </p>
+<p>
+ Unlike the C++ Standard facet <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">num_put</span></code>,
+ the facet <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>
+ formats <code class="computeroutput"><span class="identifier">infinity</span></code> and <code class="computeroutput"><span class="identifier">NaN</span></code> in a consistent and portable manner.
+ It uses the following string representations:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Number
+ </p>
+ </th>
+<th>
+ <p>
+ String
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Positive infinity
+ </p>
+ </td>
+<td>
+ <p>
+ inf
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Positive NaN
+ </p>
+ </td>
+<td>
+ <p>
+ nan
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Negative infinity
+ </p>
+ </td>
+<td>
+ <p>
+ -inf
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Negative NaN
+ </p>
+ </td>
+<td>
+ <p>
+ -nan
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ The numbers can be of type <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>. The strings can be in all
+ lower case or all upper case. An optional + sign can be used with positive
+ numbers. This can be controlled with the <code class="computeroutput"><span class="identifier">uppercase</span></code>,
+ <code class="computeroutput"><span class="identifier">lowercase</span></code>, <code class="computeroutput"><span class="identifier">showpos</span></code> and <code class="computeroutput"><span class="identifier">noshowpos</span></code>
+ manipulators. Formatting of integers, boolean values and finite floating-point
+ numbers is simply delegated to the normal <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">num_put</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.fp_facets.reference.h1"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.reference.facet_nonfinite_num_get"></a></span><a class="link" href="reference.html#math_toolkit.fp_facets.reference.facet_nonfinite_num_get">Facet
+ <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code></a>
+ </h6>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">CharType</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">InputIterator</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">istreambuf_iterator</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">></span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">nonfinite_num_get</span><span class="special">;</span>
+</pre>
+<p>
+ The class <code class="computeroutput"><span class="identifier">nonfinite_num_get</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">,</span> <span class="identifier">InputIterator</span><span class="special">></span></code> is derived from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">num_get</span><span class="special"><</span><span class="identifier">CharType</span><span class="special">,</span> <span class="identifier">IntputIterator</span><span class="special">></span></code>. Thus it is a facet that parses strings
+ that represent numbers. The first template argument is the character type
+ of the strings, usually <code class="computeroutput"><span class="keyword">char</span></code>
+ or <code class="computeroutput"><span class="keyword">wchar_t</span></code>. The second template
+ argument is the type of iterator used to read the strings. It is required
+ to be an input iterator. Usually the default is used. The public interface
+ of the class consists of a single constructor only:
+ </p>
+<pre class="programlisting"><span class="identifier">nonfinite_num_get</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span>
+</pre>
+<p>
+ The flags argument is discussed below. The <code class="computeroutput"><span class="keyword">class</span>
+ <span class="keyword">template</span> <span class="identifier">nonfinite_num_get</span></code>
+ is defined in the header <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">nonfinite_num_facets</span><span class="special">.</span><span class="identifier">hpp</span></code> and lives in the <code class="computeroutput"><span class="keyword">namespace</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span></code>.
+ </p>
+<p>
+ Unlike the facet <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">num_get</span></code>, the facet <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code>
+ parses strings that represent <code class="computeroutput"><span class="identifier">infinity</span></code>
+ and <code class="computeroutput"><span class="identifier">NaN</span></code> in a consistent and
+ portable manner. It recognizes precisely the string representations specified
+ by the C99 standard:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Number
+ </p>
+ </th>
+<th>
+ <p>
+ String
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Positive infinity
+ </p>
+ </td>
+<td>
+ <p>
+ inf, infinity
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Positive NaN
+ </p>
+ </td>
+<td>
+ <p>
+ nan, nan(...)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Negative infinity
+ </p>
+ </td>
+<td>
+ <p>
+ -inf, -infinity
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Negative NaN
+ </p>
+ </td>
+<td>
+ <p>
+ -nan, -nan(...)
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ The numbers can be of type <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>. The facet is case-insensitive.
+ An optional + sign can be used with positive numbers. The dots in nan(...)
+ stand for an arbitrary string usually containing the <span class="emphasis"><em>NaN payload</em></span>.
+ Parsing of strings that represent integers, boolean values and finite floating-point
+ numbers is delegated to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">num_get</span></code>.
+ </p>
+<p>
+ When the facet parses a string that represents <code class="computeroutput"><span class="identifier">infinity</span></code>
+ on a platform that lacks infinity, then the fail bit of the stream is set.
+ </p>
+<p>
+ When the facet parses a string that represents <code class="computeroutput"><span class="identifier">NaN</span></code>
+ on a platform that lacks NaN, then the fail bit of the stream is set.
+ </p>
+<h5>
+<a name="math_toolkit.fp_facets.reference.h2"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.reference.flags"></a></span><a class="link" href="reference.html#math_toolkit.fp_facets.reference.flags">Flags</a>
+ </h5>
+<p>
+ The constructors for <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>
+ and <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code> take
+ an optional bit flags argument. There are four different bit flags:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ legacy
+ </li>
+<li class="listitem">
+ signed_zero
+ </li>
+<li class="listitem">
+ trap_infinity
+ </li>
+<li class="listitem">
+ trap_nan
+ </li>
+</ul></div>
+<p>
+ The flags can be combined with the OR <code class="computeroutput"><span class="keyword">operator</span><span class="special">|</span></code>.
+ </p>
+<p>
+ The flags are defined in the header <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">nonfinite_num_facets</span><span class="special">.</span><span class="identifier">hpp</span></code> and live in the <code class="computeroutput"><span class="keyword">namespace</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.fp_facets.reference.h3"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.reference.legacy"></a></span><a class="link" href="reference.html#math_toolkit.fp_facets.reference.legacy">legacy</a>
+ </h6>
+<p>
+ The legacy flag has no effect with the output facet <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>.
+ </p>
+<p>
+ If the legacy flag is used with the <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code>
+ input facet, then the facet will recognize all the following string representations
+ of <code class="computeroutput"><span class="identifier">infinity</span></code> and <code class="computeroutput"><span class="identifier">NaN</span></code>:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Number
+ </p>
+ </th>
+<th>
+ <p>
+ String
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Positive infinity
+ </p>
+ </td>
+<td>
+ <p>
+ inf, infinity, one#inf
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Positive NaN
+ </p>
+ </td>
+<td>
+ <p>
+ nan, nan(...), nanq, nans, qnan, snan, one#ind, one#qnan, one#snan
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Negative infinity
+ </p>
+ </td>
+<td>
+ <p>
+ -inf, -infinity, -one#inf
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Negative NaN
+ </p>
+ </td>
+<td>
+ <p>
+ -nan, -nan(...), -nanq, -nans, -qnan, -snan, -one#ind, - one#qnan,
+ -one#snan
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The numbers can be of type <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>.
+ </li>
+<li class="listitem">
+ The facet is case-insensitive.
+ </li>
+<li class="listitem">
+ An optional <code class="computeroutput"><span class="special">+</span></code> sign can be
+ used with the positive values.
+ </li>
+<li class="listitem">
+ The dots in <code class="computeroutput"><span class="identifier">nan</span><span class="special">(...)</span></code>
+ stand for an arbitrary string.
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">one</span></code> stands for any string
+ that <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">num_get</span></code> parses as the number <code class="computeroutput"><span class="number">1</span></code>, typically "1.#INF", "1.QNAN"
+ but also "000001.#INF"...
+ </li>
+</ul></div>
+<p>
+ The list includes a number of non-standard string representations of infinity
+ and NaN that are used by various existing implementations of the C++ standard
+ library, and also string representations used by other programming languages.
+ </p>
+<h6>
+<a name="math_toolkit.fp_facets.reference.h4"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.reference.signed_zero"></a></span><a class="link" href="reference.html#math_toolkit.fp_facets.reference.signed_zero">signed_zero</a>
+ </h6>
+<p>
+ If the <code class="computeroutput"><span class="identifier">signed_zero</span></code> flag is
+ used with <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>,
+ then the facet will always distinguish between positive and negative zero.
+ It will format positive zero as "0" or "+0" and negative
+ zero as "-0". The string representation of positive zero can be
+ controlled with the <code class="computeroutput"><span class="identifier">showpos</span></code>
+ and <code class="computeroutput"><span class="identifier">noshowpos</span></code> manipulators.
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">signed_zero</span> <span class="identifier">flag</span></code>
+ has no effect with the input facet <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code>.
+ The input facet <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code>
+ always parses "0" and "+0" as positive zero and "-0"
+ as negative zero, as do most implementations of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">num_get</span></code>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If the <code class="computeroutput"><span class="identifier">signed_zero</span></code> flag
+ is not set (the default), then a negative zero value will be displayed
+ on output in whatever way the platform normally handles it. For most platforms,
+ this it will format positive zero as "0" or "+0" and
+ negative zero as "-0". But setting the <code class="computeroutput"><span class="identifier">signed_zero</span></code>
+ flag may be more portable.
+ </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="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ A negative zero value can be portably produced using the changesign function
+ <code class="computeroutput"><span class="special">(</span><span class="identifier">changesign</span><span class="special">)(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">ValType</span><span class="special">>(</span><span class="number">0</span><span class="special">))</span></code>
+ where <code class="computeroutput"><span class="identifier">ValType</span></code> is <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code>
+ or <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>,
+ or a User-Defined floating-point type (UDT) provided that this UDT has
+ a sign and that the changesign function is implemented.
+ </p></td></tr>
+</table></div>
+<h6>
+<a name="math_toolkit.fp_facets.reference.h5"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.reference.trap_infinity"></a></span><a class="link" href="reference.html#math_toolkit.fp_facets.reference.trap_infinity">trap_infinity</a>
+ </h6>
+<p>
+ If the <code class="computeroutput"><span class="identifier">trap_infinity</span></code> flag
+ is used with <code class="computeroutput"><span class="identifier">nonfinite_num_put</span></code>,
+ then the facet will throw an exception of type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">failure</span></code>
+ when an attempt is made to format positive or negative infinity. If the facet
+ is called from a stream insertion operator, then the stream will catch that
+ exception and set either its <code class="computeroutput"><span class="identifier">fail</span>
+ <span class="identifier">bit</span></code> or its <code class="computeroutput"><span class="identifier">bad</span>
+ <span class="identifier">bit</span></code>. Which bit is set is platform
+ dependent.
+ </p>
+<p>
+ If the <code class="computeroutput"><span class="identifier">trap_infinity</span></code> flag
+ is used with <code class="computeroutput"><span class="identifier">nonfinite_num_get</span></code>,
+ then the facet will set the <code class="computeroutput"><span class="identifier">fail</span>
+ <span class="identifier">bit</span></code> of the stream when an attempt
+ is made to parse a string that represents positive or negative infinity.
+ </p>
+<p>
+ (See Design Rationale below for a discussion of this inconsistency.)
+ </p>
+<h6>
+<a name="math_toolkit.fp_facets.reference.h6"></a>
+ <span class="phrase"><a name="math_toolkit.fp_facets.reference.trap_nan"></a></span><a class="link" href="reference.html#math_toolkit.fp_facets.reference.trap_nan">trap_nan</a>
+ </h6>
+<p>
+ Same as <code class="computeroutput"><span class="identifier">trap_infinity</span></code>, but
+ positive and negative NaN are trapped instead.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="facets_intro.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_facets.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/fpclass.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/fpclass.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,243 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Floating-Point Classification: Infinities and NaNs</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../utils.html" title="Chapter 4. Floating Point Utilities">
+<link rel="prev" href="rounding/modf.html" title="Integer and Fractional Part Splitting (modf)">
+<link rel="next" href="sign_functions.html" title="Sign Manipulation Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="rounding/modf.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sign_functions.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_fpclass">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.fpclass"></a><a class="link" href="fpclass.html" title="Floating-Point Classification: Infinities and NaNs">Floating-Point Classification: Infinities
+ and NaNs</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.fpclass.h0"></a>
+ <span class="phrase"><a name="math_toolkit.fpclass.synopsis"></a></span><a class="link" href="fpclass.html#math_toolkit.fpclass.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">FP_ZERO</span> <span class="comment">/* implementation specific value */</span>
+<span class="preprocessor">#define</span> <span class="identifier">FP_NORMAL</span> <span class="comment">/* implementation specific value */</span>
+<span class="preprocessor">#define</span> <span class="identifier">FP_INFINITE</span> <span class="comment">/* implementation specific value */</span>
+<span class="preprocessor">#define</span> <span class="identifier">FP_NAN</span> <span class="comment">/* implementation specific value */</span>
+<span class="preprocessor">#define</span> <span class="identifier">FP_SUBNORMAL</span> <span class="comment">/* implementation specific value */</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">fpclassify</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">isfinite</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span> <span class="comment">// Neither infinity nor NaN.</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">isinf</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span> <span class="comment">// Infinity (+ or -).</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">isnan</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span> <span class="comment">// NaN.</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">isnormal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span> <span class="comment">// isfinite and not denormalised.</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</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">fpclassify</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ to use these functions.
+ </p>
+<h5>
+<a name="math_toolkit.fpclass.h1"></a>
+ <span class="phrase"><a name="math_toolkit.fpclass.description"></a></span><a class="link" href="fpclass.html#math_toolkit.fpclass.description">Description</a>
+ </h5>
+<p>
+ These functions provide the same functionality as the macros with the same
+ name in C99, indeed if the C99 macros are available, then these functions are
+ implemented in terms of them, otherwise they rely on std::numeric_limits<>
+ to function.
+ </p>
+<p>
+ Note that the definition of these functions <span class="emphasis"><em>does not suppress the
+ definition of these names as macros by math.h</em></span> on those platforms
+ that already provide these as macros. That mean that the following have differing
+ meanings:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+
+<span class="comment">// This might call a global macro if defined,</span>
+<span class="comment">// but might not work if the type of z is unsupported </span>
+<span class="comment">// by the std lib macro:</span>
+<span class="identifier">isnan</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span>
+<span class="comment">//</span>
+<span class="comment">// This calls the Boost version</span>
+<span class="comment">// (found via the "using namespace boost::math" declaration)</span>
+<span class="comment">// it works for any type that has numeric_limits support for type z:</span>
+<span class="special">(</span><span class="identifier">isnan</span><span class="special">)(</span><span class="identifier">z</span><span class="special">);</span>
+<span class="comment">//</span>
+<span class="comment">// As above but with explicit namespace qualification.</span>
+<span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">isnan</span><span class="special">)(</span><span class="identifier">z</span><span class="special">);</span>
+<span class="comment">//</span>
+<span class="comment">// This will cause a compiler error if isnan is a native macro:</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">isnan</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span>
+<span class="comment">// So always use instead:</span>
+<span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">isnan</span><span class="special">)(</span><span class="identifier">z</span><span class="special">);</span>
+<span class="comment">//</span>
+<span class="comment">// You can also add a using statement,</span>
+<span class="comment">// globally to a .cpp file, or to a local function in a .hpp file.</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">isnan</span><span class="special">;</span>
+<span class="comment">// so you can write the shorter and less cluttered</span>
+<span class="special">(</span><span class="identifier">isnan</span><span class="special">)(</span><span class="identifier">z</span><span class="special">)</span>
+<span class="comment">// But, as above, if isnan is a native macro, this causes a compiler error,</span>
+<span class="comment">// because the macro always 'gets' the name first, unless enclosed in () brackets.</span>
+</pre>
+<p>
+ Detailed descriptions for each of these functions follows:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">fpclassify</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
+</pre>
+<p>
+ Returns an integer value that classifies the value <span class="emphasis"><em>t</em></span>:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ fpclassify value
+ </p>
+ </th>
+<th>
+ <p>
+ class of t.
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ FP_ZERO
+ </p>
+ </td>
+<td>
+ <p>
+ If <span class="emphasis"><em>t</em></span> is zero.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ FP_NORMAL
+ </p>
+ </td>
+<td>
+ <p>
+ If <span class="emphasis"><em>t</em></span> is a non-zero, non-denormalised finite
+ value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ FP_INFINITE
+ </p>
+ </td>
+<td>
+ <p>
+ If <span class="emphasis"><em>t</em></span> is plus or minus infinity.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ FP_NAN
+ </p>
+ </td>
+<td>
+ <p>
+ If <span class="emphasis"><em>t</em></span> is a NaN.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ FP_SUBNORMAL
+ </p>
+ </td>
+<td>
+ <p>
+ If <span class="emphasis"><em>t</em></span> is a denormalised number.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">isfinite</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ Returns true only if <span class="emphasis"><em>z</em></span> is not an infinity or a NaN.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">isinf</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
+</pre>
+<p>
+ Returns true only if <span class="emphasis"><em>z</em></span> is plus or minus infinity.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">isnan</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
+</pre>
+<p>
+ Returns true only if <span class="emphasis"><em>z</em></span> is a NaN.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">isnormal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
+</pre>
+<p>
+ Returns true only if <span class="emphasis"><em>z</em></span> is a normal number (not zero, infinite,
+ NaN, or denormalised).
+ </p>
+<h6>
+<a name="math_toolkit.fpclass.h2"></a>
+ <span class="phrase"><a name="math_toolkit.fpclass.floating_point_format"></a></span><a class="link" href="fpclass.html#math_toolkit.fpclass.floating_point_format">Floating-point
+ format</a>
+ </h6>
+<p>
+ If you wish to find details of the floating-point format for any particular
+ processor, there is a program
+ </p>
+<p>
+ inspect_fp.cpp
+ </p>
+<p>
+ by Johan Rade which can be used to print out the processor type, endianness,
+ and detailed bit layout of a selection of floating-point values, including
+ infinity and NaNs.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="rounding/modf.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sign_functions.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/future.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/future.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,138 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Extras/Future Directions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../dist.html" title="Chapter 2. Statistical Distributions and Functions">
+<link rel="prev" href="dist_ref/dist_algorithms.html" title="Distribution Algorithms">
+<link rel="next" href="../special.html" title="Chapter 3. Special Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="dist_ref/dist_algorithms.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../special.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_future">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.future"></a><a class="link" href="future.html" title="Extras/Future Directions">Extras/Future Directions</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.future.h0"></a>
+ <span class="phrase"><a name="math_toolkit.future.adding_additional_location_and_s"></a></span><a class="link" href="future.html#math_toolkit.future.adding_additional_location_and_s">Adding
+ Additional Location and Scale Parameters</a>
+ </h5>
+<p>
+ In some modelling applications we require a distribution with a specific location
+ and scale: often this equates to a specific mean and standard deviation, although
+ for many distributions the relationship between these properties and the location
+ and scale parameters are non-trivial. See http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm
+ for more information.
+ </p>
+<p>
+ The obvious way to handle this is via an adapter template:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Dist</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">scaled_distribution</span>
+<span class="special">{</span>
+ <span class="identifier">scaled_distribution</span><span class="special">(</span>
+ <span class="keyword">const</span> <span class="identifier">Dist</span> <span class="identifier">dist</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">location</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">Dist</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">scale</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Which would then have its own set of overloads for the non-member accessor
+ functions.
+ </p>
+<h5>
+<a name="math_toolkit.future.h1"></a>
+ <span class="phrase"><a name="math_toolkit.future.an_any_distribution_class"></a></span><a class="link" href="future.html#math_toolkit.future.an_any_distribution_class">An
+ "any_distribution" class</a>
+ </h5>
+<p>
+ It is easy to add a distribution object that virtualises the actual type of
+ the distribution, and can therefore hold "any" object that conforms
+ to the conceptual requirements of a distribution:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">any_distribution</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Distribution</span><span class="special">></span>
+ <span class="identifier">any_distribution</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Distribution</span><span class="special">&</span> <span class="identifier">d</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="comment">// Get the cdf of the underlying distribution:</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">cdf</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">any_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>&</span> <span class="identifier">d</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="comment">// etc....</span>
+</pre>
+<p>
+ Such a class would facilitate the writing of non-template code that can function
+ with any distribution type.
+ </p>
+<p>
+ The <a href="http://sourceforge.net/projects/distexplorer/" target="_top">Statistical
+ Distribution Explorer</a> utility for Windows is a usage example.
+ </p>
+<p>
+ It's not clear yet whether there is a compelling use case though. Possibly
+ tests for goodness of fit might provide such a use case: this needs more investigation.
+ </p>
+<h5>
+<a name="math_toolkit.future.h2"></a>
+ <span class="phrase"><a name="math_toolkit.future.higher_level_hypothesis_tests"></a></span><a class="link" href="future.html#math_toolkit.future.higher_level_hypothesis_tests">Higher
+ Level Hypothesis Tests</a>
+ </h5>
+<p>
+ Higher-level tests roughly corresponding to the <a href="http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/HypothesisTests.html" target="_top">Mathematica
+ Hypothesis Tests</a> package could be added reasonably easily, for example:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">InputIterator</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">InputIterator</span><span class="special">>::</span><span class="identifier">value_type</span>
+ <span class="identifier">test_equal_mean</span><span class="special">(</span>
+ <span class="identifier">InputIterator</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">InputIterator</span> <span class="identifier">b</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">InputIterator</span><span class="special">>::</span><span class="identifier">value_type</span> <span class="identifier">expected_mean</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the probability that the data in the sequence [a,b) has the mean <span class="emphasis"><em>expected_mean</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.future.h3"></a>
+ <span class="phrase"><a name="math_toolkit.future.integration_with_statistical_acc"></a></span><a class="link" href="future.html#math_toolkit.future.integration_with_statistical_acc">Integration
+ With Statistical Accumulators</a>
+ </h5>
+<p>
+ <a href="http://boost-sandbox.sourceforge.net/libs/accumulators/doc/html/index.html" target="_top">Eric
+ Niebler's accumulator framework</a> - also work in progress - provides
+ the means to calculate various statistical properties from experimental data.
+ There is an opportunity to integrate the statistical tests with this framework
+ at some later date:
+ </p>
+<pre class="programlisting"><span class="comment">// Define an accumulator, all required statistics to calculate the test</span>
+<span class="comment">// are calculated automatically:</span>
+<span class="identifier">accumulator_set</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">features</span><span class="special"><</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">test_expected_mean</span><span class="special">></span> <span class="special">></span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">expected_mean</span><span class="special">=</span><span class="number">4</span><span class="special">);</span>
+<span class="comment">// Pass our data to the accumulator:</span>
+<span class="identifier">acc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">mydata</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">mydata</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">acc</span><span class="special">);</span>
+<span class="comment">// Extract the result:</span>
+<span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">probability</span><span class="special">(</span><span class="identifier">acc</span><span class="special">);</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="dist_ref/dist_algorithms.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../special.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/gcd_credits.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/gcd_credits.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Credits</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="gcd_history.html" title="History">
+<link rel="next" href="../toolkit.html" title="Chapter 11. Internals (Series, Rationals and Continued Fractions, Root Finding, Function Minimization, Testing and Development Tools)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="gcd_history.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../toolkit.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_gcd_credits">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.gcd_credits"></a><a class="link" href="gcd_credits.html" title="Credits">Credits</a>
+</h2></div></div></div>
+<p>
+ The author of the Boost compilation of GCD and LCM computations is Daryle Walker.
+ The code was prompted by existing code hiding in the implementations of Paul
+ Moore's rational library and Steve Cleary's pool library. The code had updates
+ by Helmut Zeisel.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="gcd_history.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../toolkit.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/gcd_function_object.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/gcd_function_object.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>GCD Function Object</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="synopsis.html" title="Synopsis">
+<link rel="next" href="lcm_function_object.html" title="LCM Function Object">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="synopsis.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="lcm_function_object.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_gcd_function_object">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.gcd_function_object"></a><a class="link" href="gcd_function_object.html" title="GCD Function Object">GCD Function Object</a>
+</h2></div></div></div>
+<p>
+ <span class="bold"><strong>Header: </strong></span> <boost/math/common_factor_rt.hpp>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">IntegerType</span> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gcd_evaluator</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// Types</span>
+ <span class="keyword">typedef</span> <span class="identifier">IntegerType</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">IntegerType</span> <span class="identifier">first_argument_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">IntegerType</span> <span class="identifier">second_argument_type</span><span class="special">;</span>
+
+ <span class="comment">// Function object interface</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span> <span class="special">()(</span> <span class="identifier">first_argument_type</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">second_argument_type</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">b</span> <span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The boost::math::gcd_evaluator class template defines a function object class
+ to return the greatest common divisor of two integers. The template is parameterized
+ by a single type, called IntegerType here. This type should be a numeric type
+ that represents integers. The result of the function object is always nonnegative,
+ even if either of the operator arguments is negative.
+ </p>
+<p>
+ This function object class template is used in the corresponding version of
+ the GCD function template. If a numeric type wants to customize evaluations
+ of its greatest common divisors, then the type should specialize on the gcd_evaluator
+ class template.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="synopsis.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="lcm_function_object.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/gcd_header.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/gcd_header.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header <boost/math/common_factor.hpp></title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="compile_time.html" title="Compile time GCD and LCM determination">
+<link rel="next" href="demo.html" title="Demonstration Program">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="compile_time.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="demo.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_gcd_header">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.gcd_header"></a><a class="link" href="gcd_header.html" title="Header <boost/math/common_factor.hpp>">Header <boost/math/common_factor.hpp></a>
+</h2></div></div></div>
+<p>
+ This header simply includes the headers <boost/math/common_factor_ct.hpp>
+ and <boost/math/common_factor_rt.hpp>.
+ </p>
+<p>
+ Note this is a legacy header: it used to contain the actual implementation,
+ but the compile-time and run-time facilities were moved to separate headers
+ (since they were independent of each other).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="compile_time.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="demo.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/gcd_history.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/gcd_history.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>History</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="rationale.html" title="Rationale">
+<link rel="next" href="gcd_credits.html" title="Credits">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="gcd_credits.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_gcd_history">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.gcd_history"></a><a class="link" href="gcd_history.html" title="History">History</a>
+</h2></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ 13 May 2013 Moved into main Boost.Math Quickbook documentation.
+ </li>
+<li class="listitem">
+ 17 Dec 2005: Converted documentation to Quickbook Format.
+ </li>
+<li class="listitem">
+ 2 Jul 2002: Compile-time and run-time items separated to new headers.
+ </li>
+<li class="listitem">
+ 7 Nov 2001: Initial version
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="rationale.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="gcd_credits.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/getting_best.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/getting_best.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,286 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Getting the Best Performance from this Library</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../perf.html" title="Chapter 14. Performance">
+<link rel="prev" href="interp.html" title="Interpreting these Results">
+<link rel="next" href="comp_compilers.html" title="Comparing Compilers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="interp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="comp_compilers.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_getting_best">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.getting_best"></a><a class="link" href="getting_best.html" title="Getting the Best Performance from this Library">Getting the Best Performance
+ from this Library</a>
+</h2></div></div></div>
+<p>
+ By far the most important thing you can do when using this library is turn
+ on your compiler's optimisation options. As the following table shows the penalty
+ for using the library in debug mode can be quite large.
+ </p>
+<div class="table">
+<a name="math_toolkit.getting_best.performance_comparison_of_releas"></a><p class="title"><b>Table 14.1. Performance Comparison of Release and Debug Settings</b></p>
+<div class="table-contents"><table class="table" summary="Performance Comparison of Release and Debug Settings">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Microsoft Visual C++ 8.0
+ </p>
+ <p>
+ Debug Settings: /Od /ZI
+ </p>
+ </th>
+<th>
+ <p>
+ Microsoft Visual C++ 8.0
+ </p>
+ <p>
+ Release settings: /Ox /arch:SSE2
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_erf/error_function.html" title="Error Functions">erf</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>16.65</p>
+<p> </p>
+<p>(1.028e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.483e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_erf/error_inv.html" title="Error Function Inverses">erf_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>19.28</p>
+<p> </p>
+<p>(1.215e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.888e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>
+ and <a class="link" href="sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>8.32</p>
+<p> </p>
+<p>(1.540e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.852e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>
+ and <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>10.25</p>
+<p> </p>
+<p>(7.492e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(7.311e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inva</a>,
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inva</a>,
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_invb</a>
+ and <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_invb</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>8.57</p>
+<p> </p>
+<p>(2.441e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.847e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a> and
+ <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>10.98</p>
+<p> </p>
+<p>(1.044e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(9.504e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>
+ and <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>10.25</p>
+<p> </p>
+<p>(3.721e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(3.631e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inva</a>
+ and <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inva</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>11.26</p>
+<p> </p>
+<p>(1.124e-004s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(9.982e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="interp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="comp_compilers.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/hankel.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/hankel.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,40 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Hankel Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. 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">
+<div class="spirit-nav">
+<a accesskey="p" href="bessel/sph_bessel.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="hankel/cyl_hankel.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_hankel">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.hankel"></a><a class="link" href="hankel.html" title="Hankel Functions">Hankel Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Cyclic Hankel Functions</span></dt>
+<dt><span class="section">Spherical Hankel Functions</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="hankel/cyl_hankel.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/hankel/cyl_hankel.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/hankel/cyl_hankel.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,152 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Cyclic Hankel Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.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">
+<div class="spirit-nav">
+<a accesskey="p" href="../hankel.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../hankel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sph_hankel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_hankel_cyl_hankel">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.hankel.cyl_hankel"></a><a class="link" href="cyl_hankel.html" title="Cyclic Hankel Functions">Cyclic Hankel Functions</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.hankel.cyl_hankel.h0"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.cyl_hankel.synopsis"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.hankel.cyl_hankel.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">cyl_hankel_1</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">cyl_hankel_1</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">cyl_hankel_2</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">cyl_hankel_2</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<h5>
+<a name="math_toolkit.hankel.cyl_hankel.h1"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.cyl_hankel.description"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.hankel.cyl_hankel.description">Description</a>
+ </h5>
+<p>
+ The functions <a class="link" href="cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_1</a>
+ and <a class="link" href="cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_2</a> return
+ the result of the Hankel functions
+ of the first and second kind respectively:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>cyl_hankel_1(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_2(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="../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="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ Note that while the arguments to these functions are real values, the results
+ are complex. That means that 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>.
+ The functions have also been 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_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>).
+ </p>
+<h5>
+<a name="math_toolkit.hankel.cyl_hankel.h2"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.cyl_hankel.performance"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.hankel.cyl_hankel.performance">Performance</a>
+ </h5>
+<p>
+ These functions are generally more efficient than two separate calls to the
+ underlying Bessel functions as internally Bessel J and Y can be computed
+ simultaneously.
+ </p>
+<h5>
+<a name="math_toolkit.hankel.cyl_hankel.h3"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.cyl_hankel.testing"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.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.hankel.cyl_hankel.h4"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.cyl_hankel.accuracy"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.hankel.cyl_hankel.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Refer to <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>.
+ </p>
+<h5>
+<a name="math_toolkit.hankel.cyl_hankel.h5"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.cyl_hankel.implementation"></a></span><a class="link" href="cyl_hankel.html#math_toolkit.hankel.cyl_hankel.implementation">Implementation</a>
+ </h5>
+<p>
+ For <span class="emphasis"><em>x < 0</em></span> the following reflection formulae are used:
+ </p>
+<p>
+ <a href="http://functions.wolfram.com/Bessel-TypeFunctions/BesselJ/16/01/01/" target="_top">
+ <span class="inlinemediaobject"><img src="../../../equations/hankel1.png"></span></a>
+ </p>
+<p>
+ <a href="http://functions.wolfram.com/Bessel-TypeFunctions/BesselY/16/01/01/" target="_top">
+ <span class="inlinemediaobject"><img src="../../../equations/hankel2.png"></span></a>
+ </p>
+<p>
+ <a href="http://functions.wolfram.com/Bessel-TypeFunctions/BesselY/16/01/01/" target="_top">
+ <span class="inlinemediaobject"><img src="../../../equations/hankel3.png"></span></a>
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../hankel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sph_hankel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/hankel/sph_hankel.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/hankel/sph_hankel.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,114 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Spherical Hankel Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.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="../airy.html" title="Airy Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="cyl_hankel.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../hankel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../airy.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_hankel_sph_hankel">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.hankel.sph_hankel"></a><a class="link" href="sph_hankel.html" title="Spherical Hankel Functions">Spherical Hankel Functions</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.hankel.sph_hankel.h0"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.sph_hankel.synopsis"></a></span><a class="link" href="sph_hankel.html#math_toolkit.hankel.sph_hankel.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">sph_hankel_1</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">sph_hankel_1</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">sph_hankel_2</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">sph_hankel_2</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<h5>
+<a name="math_toolkit.hankel.sph_hankel.h1"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.sph_hankel.description"></a></span><a class="link" href="sph_hankel.html#math_toolkit.hankel.sph_hankel.description">Description</a>
+ </h5>
+<p>
+ The functions <a class="link" href="sph_hankel.html" title="Spherical Hankel Functions">sph_hankel_1</a>
+ and <a class="link" href="sph_hankel.html" title="Spherical Hankel Functions">sph_hankel_2</a> return
+ the result of the <a href="http://dlmf.nist.gov/10.47#P1" target="_top">spherical Hankel
+ functions</a> of the first and second kind 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="../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="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ Note that while the arguments to these functions are real values, the results
+ are complex. That means that 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>.
+ The functions have also been 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_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>).
+ </p>
+<h5>
+<a name="math_toolkit.hankel.sph_hankel.h2"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.sph_hankel.testing"></a></span><a class="link" href="sph_hankel.html#math_toolkit.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.hankel.sph_hankel.h3"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.sph_hankel.accuracy"></a></span><a class="link" href="sph_hankel.html#math_toolkit.hankel.sph_hankel.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Refer to <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="../bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>.
+ </p>
+<h5>
+<a name="math_toolkit.hankel.sph_hankel.h4"></a>
+ <span class="phrase"><a name="math_toolkit.hankel.sph_hankel.implementation"></a></span><a class="link" href="sph_hankel.html#math_toolkit.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_1</a>
+ and <a class="link" href="cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_2</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../hankel.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../airy.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/high_precision.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/high_precision.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,100 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using Boost.Math with High-Precision Floating-Point Libraries</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../using_udt.html" title="Chapter 12. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others">
+<link rel="prev" href="../using_udt.html" title="Chapter 12. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others">
+<link rel="next" href="high_precision/why_high_precision.html" title="Why use a high-precision library rather than built-in floating-point types?">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../using_udt.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../using_udt.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="high_precision/why_high_precision.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_high_precision">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.high_precision"></a><a class="link" href="high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">Using Boost.Math with High-Precision
+ Floating-Point Libraries</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="high_precision/why_high_precision.html">Why use
+ a high-precision library rather than built-in floating-point types?</a></span></dt>
+<dt><span class="section"><a href="high_precision/use_multiprecision.html">Using
+ Boost.Multiprecision</a></span></dt>
+<dt><span class="section"><a href="high_precision/float128.html">Using with GCC's
+ __float128 datatype</a></span></dt>
+<dt><span class="section"><a href="high_precision/use_mpfr.html">Using With MPFR
+ or GMP - High-Precision Floating-Point Library</a></span></dt>
+<dt><span class="section">Using e_float Library</span></dt>
+<dt><span class="section">Using NTL Library</span></dt>
+<dt><span class="section"><a href="high_precision/using_test.html">Using without
+ expression templates for Boost.Test and others</a></span></dt>
+</dl></div>
+<p>
+ The special functions, distributions, constants and tools in this library can
+ be used with a number of high-precision libraries, including:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Boost.Multiprecision
+ </li>
+<li class="listitem">
+ e_float (TOMS Algorithm 910)
+ </li>
+<li class="listitem">
+ NTL A Library for doing Number Theory
+ </li>
+<li class="listitem">
+ GNU Multiple Precision Arithmetic Library
+ </li>
+<li class="listitem">
+ GNU MPFR library
+ </li>
+<li class="listitem">
+ __float128
+ </li>
+</ul></div>
+<p>
+ The last four have some license restrictions; only Boost.Multiprecision
+ when using the <code class="computeroutput"><span class="identifier">cpp_float</span></code> backend
+ can provide an unrestricted Boost
+ license.
+ </p>
+<p>
+ At present, the price of a free license is slightly lower speed.
+ </p>
+<p>
+ Of course, the main cost of higher precision is very much decreased (usually
+ at least hundred-fold) computation speed, and big increases in memory use.
+ </p>
+<p>
+ Some libraries offer true <a href="http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic" target="_top">arbitrary
+ precision arithmetic</a> where the precision is limited only by avilable
+ memory and compute time, but most are used at some arbitrarily-fixed precision,
+ say 100 decimal digits.
+ </p>
+<p>
+ Boost.Multiprecision
+ can operate in both ways, but the most popular choice is likely to be about
+ a hundred decimal digits, though examples of computing tens of thousands of
+ digits have been demonstrated.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../using_udt.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../using_udt.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="high_precision/why_high_precision.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/high_precision/e_float.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/high_precision/e_float.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using e_float Library</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">
+<link rel="prev" href="use_mpfr.html" title="Using With MPFR or GMP - High-Precision Floating-Point Library">
+<link rel="next" href="use_ntl.html" title="Using NTL Library">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="use_mpfr.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="use_ntl.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_high_precision_e_float">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.high_precision.e_float"></a><a class="link" href="e_float.html" title="Using e_float Library">Using e_float Library</a>
+</h3></div></div></div>
+<p>
+ Boost.Multiprecision
+ was a development from the <a href="http://calgo.acm.org/910.zip" target="_top">e_float
+ (TOMS Algorithm 910)</a> library by Christopher Kormanyos.
+ </p>
+<p>
+ e_float can still be used with Boost.Math library via the header:
+ </p>
+<pre class="programlisting"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">bindings</span><span class="special">/</span><span class="identifier">e_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ And the type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">ef</span><span class="special">::</span><span class="identifier">e_float</span></code>:
+ this type is a thin wrapper class around ::e_float which provides the necessary
+ syntactic sugar to make everything "just work".
+ </p>
+<p>
+ There is also a concept checking test program for e_float support here.
+ </p>
+<p>
+ <span class="bold"><strong>New projects are recommended to use Boost.Multiprecision
+ with <code class="computeroutput"><span class="identifier">cpp_float</span></code> backend instead.</strong></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="use_mpfr.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="use_ntl.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/high_precision/float128.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/high_precision/float128.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using with GCC's __float128 datatype</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">
+<link rel="prev" href="use_multiprecision.html" title="Using Boost.Multiprecision">
+<link rel="next" href="use_mpfr.html" title="Using With MPFR or GMP - High-Precision Floating-Point Library">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="use_multiprecision.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="use_mpfr.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_high_precision_float128">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.high_precision.float128"></a><a class="link" href="float128.html" title="Using with GCC's __float128 datatype">Using with GCC's
+ __float128 datatype</a>
+</h3></div></div></div>
+<p>
+ At present support for GCC's native <code class="computeroutput"><span class="identifier">__float128</span></code>
+ datatype is extremely limited: the numeric constants will all work with that
+ type, and that's about it. If you want to use the distributions or special
+ functions then you will need to provide your own wrapper header that:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Provides std::numeric_limits<__float128> support.
+ </li>
+<li class="listitem">
+ Provides overloads of the standard library math function for type __float128
+ and which forward to the libquadmath equivalents.
+ </li>
+</ul></div>
+<p>
+ Ultimately these facilities should be provided by GCC and libstdc++.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="use_multiprecision.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="use_mpfr.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/high_precision/use_mpfr.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/high_precision/use_mpfr.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,107 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using With MPFR or GMP - High-Precision Floating-Point Library</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">
+<link rel="prev" href="float128.html" title="Using with GCC's __float128 datatype">
+<link rel="next" href="e_float.html" title="Using e_float Library">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="float128.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="e_float.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_high_precision_use_mpfr">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.high_precision.use_mpfr"></a><a class="link" href="use_mpfr.html" title="Using With MPFR or GMP - High-Precision Floating-Point Library">Using With MPFR
+ or GMP - High-Precision Floating-Point Library</a>
+</h3></div></div></div>
+<p>
+ The special functions and tools in this library can be used with MPFR
+ (an arbitrary precision number type based on the <a href="http://gmplib.org/" target="_top">GNU
+ Multiple Precision Arithmetic Library</a>), either via the bindings in
+ boost/math/bindings/mpfr.hpp,
+ or via boost/math/bindings/mpreal.hpp.
+ </p>
+<p>
+ <span class="bold"><strong>New projects are recommended to use Boost.Multiprecision
+ with GMP/MPFR backend instead.</strong></span>
+ </p>
+<p>
+ In order to use these bindings you will need to have installed MPFR
+ plus its dependency the GMP library.
+ You will also need one of the two supported C++ wrappers for MPFR: gmpfrxx (or mpfr_class),
+ or mpfr-C++ (mpreal).
+ </p>
+<p>
+ Unfortunately neither <code class="computeroutput"><span class="identifier">mpfr_class</span></code>
+ nor <code class="computeroutput"><span class="identifier">mpreal</span></code> quite satisfy
+ our conceptual requirements, so there is a very thin set of additional interfaces
+ and some helper traits defined in boost/math/bindings/mpfr.hpp
+ and boost/math/bindings/mpreal.hpp
+ that you should use in place of including 'gmpfrxx.h' or 'mpreal.h' directly.
+ The classes <code class="computeroutput"><span class="identifier">mpfr_class</span></code> or
+ <code class="computeroutput"><span class="identifier">mpreal</span></code> are then usable unchanged
+ once this header is included, so for example <code class="computeroutput"><span class="identifier">mpfr_class</span></code>'s
+ performance-enhancing expression templates are preserved and fully supported
+ by this library:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">bindings</span><span class="special">/</span><span class="identifier">mpfr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">mpfr_class</span><span class="special">::</span><span class="identifier">set_dprec</span><span class="special">(</span><span class="number">500</span><span class="special">);</span> <span class="comment">// 500 bit precision</span>
+ <span class="comment">//</span>
+ <span class="comment">// Note that the argument to tgamma is</span>
+ <span class="comment">// an expression template - that's just fine here.</span>
+ <span class="comment">//</span>
+ <span class="identifier">mpfr_class</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">mpfr_class</span><span class="special">(</span><span class="number">2</span><span class="special">)));</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">50</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">v</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Alternatively use with <code class="computeroutput"><span class="identifier">mpreal</span></code>
+ would look like:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">bindings</span><span class="special">/</span><span class="identifier">mpreal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">mpfr</span><span class="special">::</span><span class="identifier">mpreal</span><span class="special">::</span><span class="identifier">set_precision</span><span class="special">(</span><span class="number">500</span><span class="special">);</span> <span class="comment">// 500 bit precision</span>
+ <span class="identifier">mpfr</span><span class="special">::</span><span class="identifier">mpreal</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">mpfr</span><span class="special">::</span><span class="identifier">mpreal</span><span class="special">(</span><span class="number">2</span><span class="special">)));</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">50</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">v</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ For those functions that are based upon the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a>, the bindings defines a series of approximations with
+ up to 61 terms and accuracy up to approximately 3e-113. This therefore sets
+ the upper limit for accuracy to the majority of functions defined this library
+ when used with either <code class="computeroutput"><span class="identifier">mpfr_class</span></code>
+ or <code class="computeroutput"><span class="identifier">mpreal</span></code>.
+ </p>
+<p>
+ There is a concept checking test program for mpfr support here
+ and here.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="float128.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="e_float.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/high_precision/use_multiprecision.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/high_precision/use_multiprecision.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,352 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using Boost.Multiprecision</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">
+<link rel="prev" href="why_high_precision.html" title="Why use a high-precision library rather than built-in floating-point types?">
+<link rel="next" href="float128.html" title="Using with GCC's __float128 datatype">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="why_high_precision.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float128.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_high_precision_use_multiprecision">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.high_precision.use_multiprecision"></a><a class="link" href="use_multiprecision.html" title="Using Boost.Multiprecision">Using
+ Boost.Multiprecision</a>
+</h3></div></div></div>
+<p>
+ <span class="bold"><strong>All new projects are recommended to use Boost.Multiprecision.</strong></span>
+ </p>
+<h6>
+<a name="math_toolkit.high_precision.use_multiprecision.h0"></a>
+ <span class="phrase"><a name="math_toolkit.high_precision.use_multiprecision.using_boost_multiprecision_cpp_f"></a></span><a class="link" href="use_multiprecision.html#math_toolkit.high_precision.use_multiprecision.using_boost_multiprecision_cpp_f">Using
+ Boost.Multiprecision <code class="computeroutput"><span class="identifier">cpp_float</span></code>
+ for numerical calculations with high precision.</a>
+ </h6>
+<p>
+ The Boost.Multiprecision library can be used for computations requiring precision
+ exceeding that of standard built-in types such as float, double and long
+ double. For extended-precision calculations, Boost.Multiprecision supplies
+ a template data type called cpp_dec_float. The number of decimal digits of
+ precision is fixed at compile-time via template parameter.
+ </p>
+<p>
+ To use these floating-point types and constants, we need some includes:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">// using boost::multiprecision::cpp_dec_float</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span>
+</pre>
+<p>
+ So now we can demonstrate with some trivial calculations:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+</pre>
+<p>
+ Using <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">cpp_dec_float_50</span></code>
+ hides the complexity of multiprecision to allow us to define variables with
+ 50 decimal digit precision just like built-in <code class="computeroutput"><span class="keyword">double</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span><span class="special">;</span>
+
+<span class="identifier">cpp_dec_float_50</span> <span class="identifier">seventh</span> <span class="special">=</span> <span class="identifier">cpp_dec_float_50</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> <span class="special">/</span> <span class="number">7</span><span class="special">;</span>
+</pre>
+<p>
+ By default, output would only show the standard 6 decimal digits, so set
+ precision to show all 50 significant digits.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">seventh</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ which outputs:
+ </p>
+<pre class="programlisting"><span class="number">0.14285714285714285714285714285714285714285714285714</span>
+</pre>
+<p>
+ We can also use constants, guaranteed to be initialized with the very last
+ bit of precision.
+ </p>
+<pre class="programlisting"><span class="identifier">cpp_dec_float_50</span> <span class="identifier">circumference</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>()</span> <span class="special">*</span> <span class="number">2</span> <span class="special">*</span> <span class="identifier">seventh</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">circumference</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ which outputs
+ </p>
+<pre class="programlisting"><span class="number">0.89759790102565521098932668093700082405633411410717</span>
+</pre>
+<h6>
+<a name="math_toolkit.high_precision.use_multiprecision.h1"></a>
+ <span class="phrase"><a name="math_toolkit.high_precision.use_multiprecision.using_boost_multiprecision_to_ge"></a></span><a class="link" href="use_multiprecision.html#math_toolkit.high_precision.use_multiprecision.using_boost_multiprecision_to_ge">Using
+ Boost.Multiprecision to generate a high-precision array of sin coefficents
+ for use with FFT.</a>
+ </h6>
+<p>
+ The Boost.Multiprecision library can be used for computations requiring precision
+ exceeding that of standard built-in types such as float, double and long
+ double. For extended-precision calculations, Boost.Multiprecision supplies
+ a template data type called cpp_dec_float. The number of decimal digits of
+ precision is fixed at compile-time via template parameter.
+ </p>
+<p>
+ To use these floating-point types and constants, we need some includes:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">// using boost::math::constants::pi;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">// using boost::multiprecision::cpp_dec_float</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">vector</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">algorithm</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iterator</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">fstream</span><span class="special">></span>
+</pre>
+<p>
+ Define a text string which is a C++ comment with the program licence, copyright
+ etc. You could of course, tailor this to your needs, including copyright
+ claim. There are versions of <code class="computeroutput"><span class="identifier">array</span></code>
+ provided by Boost/array in boost::array or the C++11 std::array, but since
+ not all platforms provide C++11 support, this program provides the Boost
+ version as fallback.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">prolog</span> <span class="special">=</span>
+<span class="special">{</span>
+ <span class="string">"// Use, modification and distribution are subject to the\n"</span>
+ <span class="string">"// Boost Software License, Version 1.0.\n"</span>
+ <span class="string">"// (See accompanying file LICENSE_1_0.txt\n"</span>
+ <span class="string">"// or copy at "</span><span class="string">"http://www.boost.org/LICENSE_1_0.txt)\n\n"</span>
+
+ <span class="string">"// Copyright ???? 2013.\n\n"</span>
+
+ <span class="string">"// Use boost/array if std::array (C++11 feature) is not available.\n"</span>
+ <span class="string">"#ifdef BOOST_NO_CXX11_HDR_ARRAY\n"</span>
+ <span class="string">"#include <boost/array/array.hpp>\n"</span>
+ <span class="string">"#else\n"</span>
+ <span class="string">"#include <array>\n"</span>
+ <span class="string">"#endif\n\n"</span>
+<span class="special">};</span>
+
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">;</span>
+<span class="comment">// VS 2010 (wrongly) requires these at file scope, not local scope in main.</span>
+<span class="comment">// This program also requires -std=c++11 option to compile using Clang and GCC.</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+</pre>
+<p>
+ One often needs to compute tables of numbers in mathematical software.
+ </p>
+<p>
+ A fast Fourier transform (FFT), for example, may use a table of the values
+ of sin((π/2<sup>n</sup>) in its implementation details. In order to maximize the precision
+ in the FFT implementation, the precision of the tabulated trigonometric values
+ should exceed that of the built-in floating-point type used in the FFT.
+ </p>
+<p>
+ The sample below computes a table of the values of sin(π/2<sup>n</sup>) in the range
+ 1 <= n <= 31.
+ </p>
+<p>
+ This program makes use of, among other program elements, the data type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span></code> for a precision of 50
+ decimal digits from Boost.Multiprecision, the value of constant π retrieved
+ from Boost.Math, guaranteed to be initialized with the very last bit of precision
+ for the type, here <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>,
+ and a C++11 lambda function combined with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">()</span></code>.
+ </p>
+<p>
+ define the number of values in the array.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span> <span class="special">=</span> <span class="number">32U</span><span class="special">;</span>
+<span class="identifier">cpp_dec_float_50</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">pi</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>();</span>
+<span class="identifier">cpp_dec_float_50</span> <span class="identifier">p2</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>();</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span> <span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">></span> <span class="identifier">sin_values</span> <span class="special">(</span><span class="identifier">size</span><span class="special">);</span>
+<span class="keyword">unsigned</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">1U</span><span class="special">;</span>
+<span class="comment">// Generate the sine values.</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span>
+<span class="special">(</span>
+ <span class="identifier">sin_values</span><span class="special">.</span><span class="identifier">begin</span> <span class="special">(),</span>
+ <span class="identifier">sin_values</span><span class="special">.</span><span class="identifier">end</span> <span class="special">(),</span>
+ <span class="special">[&</span><span class="identifier">n</span><span class="special">](</span><span class="identifier">cpp_dec_float_50</span><span class="special">&</span> <span class="identifier">y</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">sin</span><span class="special">(</span> <span class="identifier">pi</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>()</span> <span class="special">/</span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">cpp_dec_float_50</span> <span class="special">(</span><span class="number">2</span><span class="special">),</span> <span class="identifier">n</span><span class="special">));</span>
+ <span class="special">++</span><span class="identifier">n</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">);</span>
+</pre>
+<p>
+ Define the floating-point type for the generated file, either built-in <code class="computeroutput"><span class="keyword">double</span><span class="special">,</span> </code>float,
+ or <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>,
+ or a user defined type like <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">fp_type</span> <span class="special">=</span> <span class="string">"double"</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Generating an `std::array` or `boost::array` for floating-point type: "</span>
+ <span class="special"><<</span> <span class="identifier">fp_type</span> <span class="special"><<</span> <span class="string">". "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ By default, output would only show the standard 6 decimal digits, so set
+ precision to show enough significant digits for the chosen floating-point
+ type. For <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>
+ is 50. (50 decimal digits should be ample for most applications).
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">precision</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">;</span>
+
+<span class="comment">// std::cout.precision(std::numeric_limits<cpp_dec_float_50>::digits10);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">precision</span> <span class="special"><<</span> <span class="string">" decimal digits precision. "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Of course, one could also choose less, for example, 36 would be sufficient
+ for the most precise current <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> implementations using 128-bit.
+ In general, it should be a couple of decimal digits more (guard digits) than
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">max_digits10</span></code> for the target system floating-point
+ type. If the implementation does not provide <code class="computeroutput"><span class="identifier">max_digits10</span></code>,
+ the the Kahan formula <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">digits</span>
+ <span class="special">*</span> <span class="number">3010</span><span class="special">/</span><span class="number">10000</span> <span class="special">+</span>
+ <span class="number">2</span></code> can be used instead.
+ </p>
+<p>
+ The compiler will read these values as decimal digits strings and use the
+ nearest representation for the floating-point type.
+ </p>
+<p>
+ Now output all the sine table, to a file of your chosen name.
+ </p>
+<pre class="programlisting"> <span class="keyword">const</span> <span class="keyword">char</span> <span class="identifier">sines_name</span><span class="special">[]</span> <span class="special">=</span> <span class="string">"sines.hpp"</span><span class="special">;</span> <span class="comment">// In same directory as .exe</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ofstream</span> <span class="identifier">fout</span><span class="special">(</span><span class="identifier">sines_name</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">out</span><span class="special">);</span> <span class="comment">// Creates if no file exists,</span>
+ <span class="comment">// & uses default overwrite/ ios::replace.</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">fout</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">()</span> <span class="special">==</span> <span class="keyword">false</span><span class="special">)</span>
+ <span class="special">{</span> <span class="comment">// failed to open OK!</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Open file "</span> <span class="special"><<</span> <span class="identifier">sines_name</span> <span class="special"><<</span> <span class="string">" failed!"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">EXIT_FAILURE</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Open file "</span> <span class="special"><<</span> <span class="identifier">sines_name</span> <span class="special"><<</span> <span class="string">" for output OK."</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">fout</span> <span class="special"><<</span> <span class="identifier">prolog</span> <span class="special"><<</span> <span class="string">"// Table of "</span> <span class="special"><<</span> <span class="identifier">sin_values</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" values with "</span>
+ <span class="special"><<</span> <span class="identifier">precision</span> <span class="special"><<</span> <span class="string">" decimal digits precision,\n"</span>
+ <span class="string">"// generated by program fft_sines_table.cpp.\n"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">fout</span> <span class="special"><<</span>
+<span class="string">"#ifdef BOOST_NO_CXX11_HDR_ARRAY"</span><span class="string">"\n"</span>
+ <span class="string">" static const boost::array<double, "</span> <span class="special"><<</span> <span class="identifier">size</span> <span class="special"><<</span> <span class="string">"> sines =\n"</span>
+<span class="string">"#else"</span><span class="string">"\n"</span>
+<span class="string">" static const std::array<double, "</span> <span class="special"><<</span> <span class="identifier">size</span> <span class="special"><<</span> <span class="string">"> sines =\n"</span>
+<span class="string">"#endif"</span><span class="string">"\n"</span>
+ <span class="string">"{{\n"</span><span class="special">;</span> <span class="comment">// 2nd { needed for some GCC compiler versions.</span>
+ <span class="identifier">fout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">precision</span><span class="special">);</span>
+
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0U</span><span class="special">;</span> <span class="special">;)</span>
+ <span class="special">{</span>
+ <span class="identifier">fout</span> <span class="special"><<</span> <span class="string">" "</span> <span class="special"><<</span> <span class="identifier">sin_values</span><span class="special">[</span><span class="identifier">i</span><span class="special">];</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">i</span> <span class="special">==</span> <span class="identifier">sin_values</span><span class="special">.</span><span class="identifier">size</span><span class="special">()-</span><span class="number">1</span><span class="special">)</span>
+ <span class="special">{</span> <span class="comment">// next is last value.</span>
+ <span class="identifier">fout</span> <span class="special"><<</span> <span class="string">"\n}};\n"</span><span class="special">;</span> <span class="comment">// 2nd } needed for some GCC compiler versions.</span>
+ <span class="keyword">break</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="identifier">fout</span> <span class="special"><<</span> <span class="string">",\n"</span><span class="special">;</span>
+ <span class="identifier">i</span><span class="special">++;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+
+ <span class="identifier">fout</span><span class="special">.</span><span class="identifier">close</span><span class="special">();</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Close file "</span> <span class="special"><<</span> <span class="identifier">sines_name</span> <span class="special"><<</span> <span class="string">" for output OK."</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="special">}</span>
+</pre>
+<p>
+ The output file generated can be seen at ..\sines.hpp
+ </p>
+<p>
+ The table output is:
+ </p>
+<pre class="programlisting"><span class="identifier">The</span> <span class="identifier">printed</span> <span class="identifier">table</span> <span class="identifier">is</span><span class="special">:</span>
+
+ <span class="number">1</span>
+ <span class="number">0.70710678118654752440084436210484903928483593768847</span>
+ <span class="number">0.38268343236508977172845998403039886676134456248563</span>
+ <span class="number">0.19509032201612826784828486847702224092769161775195</span>
+ <span class="number">0.098017140329560601994195563888641845861136673167501</span>
+ <span class="number">0.049067674327418014254954976942682658314745363025753</span>
+ <span class="number">0.024541228522912288031734529459282925065466119239451</span>
+ <span class="number">0.012271538285719926079408261951003212140372319591769</span>
+ <span class="number">0.0061358846491544753596402345903725809170578863173913</span>
+ <span class="number">0.003067956762965976270145365490919842518944610213452</span>
+ <span class="number">0.0015339801862847656123036971502640790799548645752374</span>
+ <span class="number">0.00076699031874270452693856835794857664314091945206328</span>
+ <span class="number">0.00038349518757139558907246168118138126339502603496474</span>
+ <span class="number">0.00019174759731070330743990956198900093346887403385916</span>
+ <span class="number">9.5873799095977345870517210976476351187065612851145e-05</span>
+ <span class="number">4.7936899603066884549003990494658872746866687685767e-05</span>
+ <span class="number">2.3968449808418218729186577165021820094761474895673e-05</span>
+ <span class="number">1.1984224905069706421521561596988984804731977538387e-05</span>
+ <span class="number">5.9921124526424278428797118088908617299871778780951e-06</span>
+ <span class="number">2.9960562263346607504548128083570598118251878683408e-06</span>
+ <span class="number">1.4980281131690112288542788461553611206917585861527e-06</span>
+ <span class="number">7.4901405658471572113049856673065563715595930217207e-07</span>
+ <span class="number">3.7450702829238412390316917908463317739740476297248e-07</span>
+ <span class="number">1.8725351414619534486882457659356361712045272098287e-07</span>
+ <span class="number">9.3626757073098082799067286680885620193236507169473e-08</span>
+ <span class="number">4.681337853654909269511551813854009695950362701667e-08</span>
+ <span class="number">2.3406689268274552759505493419034844037886207223779e-08</span>
+ <span class="number">1.1703344634137277181246213503238103798093456639976e-08</span>
+ <span class="number">5.8516723170686386908097901008341396943900085051757e-09</span>
+ <span class="number">2.9258361585343193579282304690689559020175857150074e-09</span>
+ <span class="number">1.4629180792671596805295321618659637103742615227834e-09</span>
+<span class="special">*/</span>
+</pre>
+<p>
+ The output can be copied as text and readily integrated into a given source
+ code. Alternatively, the output can be written to a text or even be used
+ within a self-written automatic code generator as this example.
+ </p>
+<p>
+ A computer algebra system can be used to verify the results obtained from
+ Boost.Math and Boost.Multiprecision. For example, the <a href="http://www.wolfram.com/products/mathematica/index.html" target="_top">Wolfram
+ Mathematica</a> computer algebra system can obtain a similar table with
+ the command:
+ </p>
+<pre class="programlisting"><span class="identifier">Table</span><span class="special">[</span><span class="identifier">N</span><span class="special">[</span><span class="identifier">Sin</span><span class="special">[</span><span class="identifier">Pi</span> <span class="special">/</span> <span class="special">(</span><span class="number">2</span><span class="special">^</span><span class="identifier">n</span><span class="special">)],</span> <span class="number">50</span><span class="special">],</span> <span class="special">{</span><span class="identifier">n</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">31</span><span class="special">,</span> <span class="number">1</span><span class="special">}]</span>
+</pre>
+<p>
+ The Wolfram Alpha computational
+ knowledge engine can also be used to generate this table. The same command
+ can be pasted into the compute box.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="why_high_precision.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float128.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/high_precision/use_ntl.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/high_precision/use_ntl.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using NTL Library</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">
+<link rel="prev" href="e_float.html" title="Using e_float Library">
+<link rel="next" href="using_test.html" title="Using without expression templates for Boost.Test and others">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="e_float.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="using_test.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_high_precision_use_ntl">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.high_precision.use_ntl"></a><a class="link" href="use_ntl.html" title="Using NTL Library">Using NTL Library</a>
+</h3></div></div></div>
+<p>
+ NTL::RR (an arbitrarily-fixed
+ precision floating-point number type), can be used via the bindings in boost/math/bindings/rr.hpp.
+ For details, see <a href="http://shoup.net/ntl/" target="_top">NTL: A Library for doing
+ Number Theory by Victor Shoup</a>.
+ </p>
+<p>
+ <span class="bold"><strong>New projects are recommended to use Boost.Multiprecision
+ instead.</strong></span>
+ </p>
+<p>
+ Unfortunately <code class="computeroutput"><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span></code> doesn't quite satisfy our conceptual
+ requirements, so there is a very thin wrapper class <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">ntl</span><span class="special">::</span><span class="identifier">RR</span></code> defined in boost/math/bindings/rr.hpp
+ that you should use in place of <code class="computeroutput"><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span></code>. The
+ class is intended to be a drop-in replacement for the "real" NTL::RR
+ that adds some syntactic sugar to keep this library happy, plus some of the
+ standard library functions not implemented in NTL.
+ </p>
+<p>
+ For those functions that are based upon the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a>, the bindings defines a series of approximations with
+ up to 61 terms and accuracy up to approximately 3e-113. This therefore sets
+ the upper limit for accuracy to the majority of functions defined this library
+ when used with <code class="computeroutput"><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span></code>.
+ </p>
+<p>
+ There is a concept checking test program for NTL support here.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="e_float.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="using_test.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/high_precision/using_test.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/high_precision/using_test.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,111 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using without expression templates for Boost.Test and others</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">
+<link rel="prev" href="use_ntl.html" title="Using NTL Library">
+<link rel="next" href="../concepts.html" title="Conceptual Requirements for Real Number Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="use_ntl.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../concepts.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_high_precision_using_test">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.high_precision.using_test"></a><a class="link" href="using_test.html" title="Using without expression templates for Boost.Test and others">Using without
+ expression templates for Boost.Test and others</a>
+</h3></div></div></div>
+<p>
+ As noted in the Boost.Multiprecision
+ documentation, certain program constructs will not compile when using expression
+ templates. One example that many users may encounter is Boost.Test (1.54
+ and earlier) when using macro BOOST_CHECK_CLOSE and BOOST_CHECK_CLOSE_FRACTION.
+ </p>
+<p>
+ If, for example, you wish to use any multiprecision type like <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code> in place of <code class="computeroutput"><span class="keyword">double</span></code> to give more precision, you will need
+ to override the default <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">et_on</span></code>
+ with <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">et_off</span></code>.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ To define a 50 decimal digit type using <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code>,
+ you must pass two template parameters to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">number</span></code>.
+ </p>
+<p>
+ It may be more legible to use a two-staged type definition such as this:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float</span><span class="special"><</span><span class="number">50</span><span class="special">></span> <span class="identifier">mp_backend</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">number</span><span class="special"><</span><span class="identifier">mp_backend</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">et_off</span><span class="special">></span> <span class="identifier">cpp_dec_float_50_noet</span><span class="special">;</span>
+</pre>
+<p>
+ Here, we first define <code class="computeroutput"><span class="identifier">mp_backend</span></code>
+ as <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code> with 50
+ digits. The second step passes this backend to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">number</span></code>
+ with <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">et_off</span></code>, an enumerated type.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">number</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float</span><span class="special"><</span><span class="number">50</span><span class="special">>,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">et_off</span><span class="special">></span>
+<span class="identifier">cpp_dec_float_50_noet</span><span class="special">;</span>
+</pre>
+<p>
+ You can reduce typing with a <code class="computeroutput"><span class="keyword">using</span></code>
+ directive <code class="computeroutput"><span class="keyword">using</span> <span class="keyword">namespace</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span></code>
+ if desired, as shown below.
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_dec_float</span><span class="special"><</span><span class="number">50</span><span class="special">>,</span> <span class="identifier">et_off</span><span class="special">></span> <span class="identifier">cpp_dec_float_50_noet</span><span class="special">;</span>
+</pre>
+<p>
+ Now <code class="computeroutput"><span class="identifier">cpp_dec_float_50_noet</span></code>
+ can be used as a direct replacement for built-in types like <code class="computeroutput"><span class="keyword">double</span></code> etc.
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">cpp_float_test_check_close</span><span class="special">)</span>
+<span class="special">{</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_dec_float_50_noet</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">);</span> <span class="comment">// All significant digits.</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpoint</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Show trailing zeros.</span>
+
+ <span class="identifier">cpp_dec_float_50_noet</span> <span class="identifier">a</span> <span class="special">(</span><span class="string">"1."</span><span class="special">);</span>
+ <span class="identifier">cpp_dec_float_50_noet</span> <span class="identifier">b</span> <span class="special">(</span><span class="string">"1."</span><span class="special">);</span>
+ <span class="identifier">b</span> <span class="special">+=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_dec_float_50_noet</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">();</span> <span class="comment">// Increment least significant decimal digit.</span>
+
+ <span class="identifier">cpp_dec_float_50_noet</span> <span class="identifier">eps</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_dec_float_50_noet</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">();</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span><span class="string">"a = "</span> <span class="special"><<</span> <span class="identifier">a</span> <span class="special"><<</span> <span class="string">",\nb = "</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="string">",\neps = "</span> <span class="special"><<</span> <span class="identifier">eps</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">eps</span> <span class="special">*</span> <span class="number">100</span><span class="special">);</span> <span class="comment">// Expected to pass (because tolerance is as percent).</span>
+ <span class="identifier">BOOST_CHECK_CLOSE_FRACTION</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">eps</span><span class="special">);</span> <span class="comment">// Expected to pass (because tolerance is as fraction).</span>
+</pre>
+<p>
+ Using <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code> with
+ the default expression template use switched on, the compiler error message
+ for `BOOST_CHECK_CLOSE_FRACTION(a, b, eps); would be:
+ </p>
+<pre class="programlisting"><span class="comment">// failure floating_point_comparison.hpp(59): error C2440: 'static_cast' :</span>
+<span class="comment">// cannot convert from 'int' to 'boost::multiprecision::detail::expression<tag,Arg1,Arg2,Arg3,Arg4>'</span>
+</pre>
+<p>
+ A full example code is at test_cpp_float_close_fraction.cpp
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="use_ntl.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../concepts.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/high_precision/why_high_precision.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/high_precision/why_high_precision.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,127 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Why use a high-precision library rather than built-in floating-point types?</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">
+<link rel="prev" href="../high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">
+<link rel="next" href="use_multiprecision.html" title="Using Boost.Multiprecision">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../high_precision.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="use_multiprecision.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_high_precision_why_high_precision">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.high_precision.why_high_precision"></a><a class="link" href="why_high_precision.html" title="Why use a high-precision library rather than built-in floating-point types?">Why use
+ a high-precision library rather than built-in floating-point types?</a>
+</h3></div></div></div>
+<p>
+ For nearly all applications, the built-in floating-point types, <code class="computeroutput"><span class="keyword">double</span></code> (and <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> if this offers higher precision
+ than <code class="computeroutput"><span class="keyword">double</span></code>) offer enough precision,
+ typically a dozen decimal digits.
+ </p>
+<p>
+ Some reasons why one would want to use a higher precision:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ A much more precise result (many more digits) is just a requirement.
+ </li>
+<li class="listitem">
+ The range of the computed value exceeds the range of the type: factorials
+ are the textbook example.
+ </li>
+<li class="listitem">
+ Using double is (or may be) too inaccurate.
+ </li>
+<li class="listitem">
+ Using long double (or may be) is too inaccurate.
+ </li>
+<li class="listitem">
+ Using an extended precision type implemented in software as double-double
+ (Darwin)
+ is sometimes unpredictably inaccurate.
+ </li>
+<li class="listitem">
+ Loss of precision or inaccuracy caused by extreme arguments or cancellation
+ error.
+ </li>
+<li class="listitem">
+ An accuracy as good as possible for a chosen built-in floating-point
+ type is required.
+ </li>
+<li class="listitem">
+ As a reference value, for example, to determine the inaccuracy of a value
+ computed with a built-in floating point type, (perhaps even using some
+ quick'n'dirty algorithm). The accuracy of many functions and distributions
+ in Boost.Math has been measured in this way from tables of very high
+ precision (up to 1000 decimal digits).
+ </li>
+</ul></div>
+<p>
+ Many functions and distributions have differences from exact values that
+ are only a few least significant bits - computation noise. Others, often
+ those for which analytical solutions are not available, require approximations
+ and iteration: these may lose several decimal digits of precision.
+ </p>
+<p>
+ Much larger loss of precision can occur for boundary
+ or corner cases,
+ often caused by <a href="http://en.wikipedia.org/wiki/Loss_of_significance" target="_top">cancellation
+ errors</a>.
+ </p>
+<p>
+ (Some of the worst and most common examples of <a href="http://en.wikipedia.org/wiki/Loss_of_significance" target="_top">cancellation
+ error or loss of significance</a> can be avoided by using <a class="link" href="../stat_tut/overview/complements.html" title="Complements are supported too - and when to use them">complements</a>:
+ see <a class="link" href="../stat_tut/overview/complements.html#why_complements">why complements?</a>).
+ </p>
+<p>
+ If you require a value which is as accurate as can be represented in the
+ floating-point type, and is thus the closest representable value and has
+ an error less than 1/2 a <a href="http://en.wikipedia.org/wiki/Least_significant_bit" target="_top">least
+ significant bit</a> or ulp
+ it may be useful to use a higher-precision type, for example, <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>, to generate this value.
+ Conversion of this value to a built-in floating-point type ('float', <code class="computeroutput"><span class="keyword">double</span></code> or <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>) will not cause any further
+ loss of precision. A decimal digit string will also be 'read' precisely by
+ the compiler into a built-in floating-point type to the nearest representable
+ value.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ In contrast, reading a value from an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span></code>
+ into a built-in floating-point type is <span class="bold"><strong>not guaranteed</strong></span>
+ by the C++ Standard to give the nearest representable value.
+ </p></td></tr>
+</table></div>
+<p>
+ William Kahan coined the term <a href="http://en.wikipedia.org/wiki/Rounding#The_table-maker.27s_dilemma" target="_top">Table-Maker's
+ Dilemma</a> for the problem of correctly rounding functions. Using a
+ much higher precision (50 or 100 decimal digits) is a practical way of generating
+ (almost always) correctly rounded values.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../high_precision.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_precision.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="use_multiprecision.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/hints.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/hints.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,100 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Other Hints and tips</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. 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">
+<div class="spirit-nav">
+<a accesskey="p" href="conventions.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="directories.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_hints">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.hints"></a><a class="link" href="hints.html" title="Other Hints and tips">Other Hints and tips</a>
+</h2></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-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.hints.h0"></a>
+ <span class="phrase"><a name="math_toolkit.hints.admonishments"></a></span><a class="link" href="hints.html#math_toolkit.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="../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="../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="../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="../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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="directories.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/history1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/history1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,621 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>History and What's New</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="building.html" title="If and How to Build a Boost.Math Library, and its Examples and Tests">
+<link rel="next" href="overview_tr1.html" title="C99 and C++ TR1 C-style Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="building.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="overview_tr1.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_history1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.history1"></a><a class="link" href="history1.html" title="History and What's New">History and What's New</a>
+</h2></div></div></div>
+<p>
+ Currently open bug reports can be viewed here.
+ </p>
+<p>
+ All bug reports including closed ones can be viewed here.
+ </p>
+<h5>
+<a name="math_toolkit.history1.h0"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_54"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_54">Boost-1.54</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added many references to Boost.Multiprecision and <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>
+ as an example of a User-defined Type (UDT).
+ </li>
+<li class="listitem">
+ Added Clang to list of supported compilers.
+ </li>
+<li class="listitem">
+ Fixed constants to use a thread-safe cache of computed values when used
+ at arbitrary precision.
+ </li>
+<li class="listitem">
+ Added finding zeros of Bessel functions <code class="computeroutput"><span class="identifier">cyl_bessel_j_zero</span></code>,
+ <code class="computeroutput"><span class="identifier">cyl_neumann_zero</span></code>, <code class="computeroutput"><span class="identifier">air_ai_zeros</span></code> and <code class="computeroutput"><span class="identifier">air_bi_zeros</span></code>(by
+ Christopher Kormanyos).
+ </li>
+<li class="listitem">
+ More accuracy improvements to the Bessel J and Y functions from Rocco Romeo.
+ </li>
+<li class="listitem">
+ Fixed nasty cyclic dependency bug that caused some headers to not compile
+ #7999.
+ </li>
+<li class="listitem">
+ Fixed bug in <a class="link" href="sf_gamma/tgamma.html" title="Gamma">tgamma</a>
+ that caused spurious overflow for arguments between 142.5 and 143.
+ </li>
+<li class="listitem">
+ Fixed bug in raise_rounding_error that caused it to return an incorrect
+ result when throwing an exception is turned off #7905.
+ </li>
+<li class="listitem">
+ Added minimal __float128 support.
+ </li>
+<li class="listitem">
+ Fixed bug in edge-cases of poisson quantile #8308.
+ </li>
+<li class="listitem">
+ Adjusted heuristics used in Halley iteration to cope with inverting the
+ incomplete beta in tricky regions where the derivative is flatlining. Example
+ is computing the quantile of the Fisher F distribution for probabilities
+ smaller than machine epsilon. See ticket #8314.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h1"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_53"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_53">Boost-1.53</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Fixed issues #7325,
+ #7415
+ and #7416,
+ #7183,
+ #7649,
+ #7694,
+ #4445,
+ #7492,
+ #7891,
+ #7429.
+ </li>
+<li class="listitem">
+ Fixed mistake in calculating pooled standard deviation in two-sample students
+ t example #7402.
+ </li>
+<li class="listitem">
+ Improve complex acos/asin/atan, see #7290,
+ #7291.
+ </li>
+<li class="listitem">
+ Improve accuracy in some corner cases of <a class="link" href="bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>/<a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>
+ thanks to suggestions from Rocco Romeo.
+ </li>
+<li class="listitem">
+ Improve accuracy of Bessel J and Y for integer orders thanks to suggestions
+ from Rocco Romeo.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h2"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_52"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_52">Boost-1.52</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Corrected moments for small degrees of freedom #7177
+ (reported by Thomas Mang).
+ </li>
+<li class="listitem">
+ Added <a class="link" href="airy.html" title="Airy Functions">Airy functions</a> and <a class="link" href="jacobi.html" title="Jacobi Elliptic Functions">Jacobi Elliptic functions</a>.
+ </li>
+<li class="listitem">
+ Corrected failure to detect bad parameters in many distributions #6934 (reported
+ by Florian Schoppmann) by adding a function check_out_of_range to test
+ many possible bad parameters. This test revealed several distributions
+ where the checks for bad parameters were ineffective, and these have been
+ rectified.
+ </li>
+<li class="listitem">
+ Fixed issue in Hankel functions that causes incorrect values to be returned
+ for <span class="emphasis"><em>x < 0</em></span> and ν odd, see #7135.
+ </li>
+<li class="listitem">
+ Fixed issues #6517,
+ #6362,
+ #7053,
+ #2693,
+ #6937,
+ #7099.
+ </li>
+<li class="listitem">
+ Permitted infinite degrees of freedom #7259
+ implemented using the normal distribution (requested by Thomas Mang).
+ </li>
+<li class="listitem">
+ Much enhanced accuracy for large degrees of freedom ν and/or large non-centrality
+ δ
+by switching to use the Students t distribution (or Normal distribution
+ for infinite degrees of freedom) centered at delta, when δ / (4 * ν) <
+ epsilon for the floating-point type in use. #7259.
+ It was found that the incomplete beta was suffering from serious cancellation
+ errors when degrees of freedom was very large. (That has now been fixed
+ in our code, but any code based on Didonato and Morris's original papers
+ (probably every implementation out there actually) will have the same issue).
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h3"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_51"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_51">Boost-1.51</a>
+ </h5>
+<p>
+ See Boost-1.52 - some items were added but not listed in time for the release.
+ </p>
+<h5>
+<a name="math_toolkit.history1.h4"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_50"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_50">Boost-1.50</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Promoted math constants to be 1st class citizens, including convenient
+ access to the most widely used built-in float, double, long double via
+ three namespaces.
+ </li>
+<li class="listitem">
+ Added the Owen's T function and Skew Normal distribution written by Benjamin
+ Sobotta: see <a class="link" href="owens_t.html" title="Owen's T function">Owens T</a> and skew_normal_distrib.
+ </li>
+<li class="listitem">
+ Added Hankel functions <a class="link" href="hankel/cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_1</a>,
+ <a class="link" href="hankel/cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_2</a>, <a class="link" href="hankel/sph_hankel.html" title="Spherical Hankel Functions">sph_hankel_1</a> and <a class="link" href="hankel/sph_hankel.html" title="Spherical Hankel Functions">sph_hankel_2</a>.
+ </li>
+<li class="listitem">
+ Corrected issue <a href="https://svn.boost.org/trac/boost/ticket/6627" target="_top">#6627
+ nonfinite_num_put formatting of 0.0 is incorrect</a> based on a patch
+ submitted by K R Walker.
+ </li>
+<li class="listitem">
+ Changed constant initialization mechanism so that it is thread safe even
+ for user-defined types, also so that user defined types get the full precision
+ of the constant, even when <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> does not. So for example
+ 128-bit rational approximations will work with UDT's and do the right thing,
+ even though <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ may be only 64 or 80 bits.
+ </li>
+<li class="listitem">
+ Fixed issue in <code class="computeroutput"><span class="identifier">bessel_jy</span></code>
+ which causes Y<sub>8.5</sub>(4π) to yield a NaN.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h5"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_49"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_49">Boost-1.49</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Deprecated wrongly named <code class="computeroutput"><span class="identifier">twothirds</span></code>
+ math constant in favour of <code class="computeroutput"><span class="identifier">two_thirds</span></code>
+ (with underscore separator). (issue #6199).
+ </li>
+<li class="listitem">
+ Refactored test data and some special function code to improve support
+ for arbitary precision and/or expression-template-enabled types.
+ </li>
+<li class="listitem">
+ Added new faster zeta function evaluation method.
+ </li>
+</ul></div>
+<p>
+ Fixed issues:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Corrected CDF complement for Laplace distribution (issue #6151).
+ </li>
+<li class="listitem">
+ Corrected branch cuts on the complex inverse trig functions, to handle
+ signed zeros (issue #6171).
+ </li>
+<li class="listitem">
+ Fixed bug in <code class="computeroutput"><span class="identifier">bessel_yn</span></code>
+ which caused incorrect overflow errors to be raised for negative <span class="emphasis"><em>n</em></span>
+ (issue #6367).
+ </li>
+<li class="listitem">
+ Also fixed minor/cosmetic/configuration issues #6120,
+ #6191,
+ #5982,
+ #6130,
+ #6234,
+ #6307,
+ #6192.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h6"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_48"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_48">Boost-1.48</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added new series evaluation methods to the cyclic Bessel I, J, K and Y
+ functions. Also taken great care to avoid spurious over and underflow of
+ these functions. Fixes issue #5560
+ </li>
+<li class="listitem">
+ Added an example of using Inverse Chi-Squared distribution for Bayesian
+ statistics, provided by Thomas Mang.
+ </li>
+<li class="listitem">
+ Added tests to use improved version of lexical_cast which handles C99 nonfinites
+ without using globale facets.
+ </li>
+<li class="listitem">
+ Corrected wrong out-of-bound uniform distribution CDF complement values
+ #5733.
+ </li>
+<li class="listitem">
+ Enabled long double support on OpenBSD (issue #6014).
+ </li>
+<li class="listitem">
+ Changed nextafter and related functions to behave in the same way as other
+ implementations - so that nextafter(+INF, 0) is a finite value (issue
+ #5832).
+ </li>
+<li class="listitem">
+ Changed tuple include configuration to fix issue when using in conjunction
+ with Boost.Tr1 (issue #5934).
+ </li>
+<li class="listitem">
+ Changed class eps_tolerance to behave correctly when both ends of the range
+ are zero (issue #6001).
+ </li>
+<li class="listitem">
+ Fixed missing include guards on prime.hpp (issue #5927).
+ </li>
+<li class="listitem">
+ Removed unused/undocumented constants from constants.hpp (issue #5982).
+ </li>
+<li class="listitem">
+ Fixed missing std:: prefix in nonfinite_num_facets.hpp (issue #5914).
+ </li>
+<li class="listitem">
+ Minor patches for Cray compiler compatibility.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h7"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_47"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_47">Boost-1.47</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added changesign function to sign.hpp to facilitate addition of nonfinite
+ facets.
+ </li>
+<li class="listitem">
+ Addition of nonfinite facets from Johan Rade, with tests, examples of use
+ for C99 format infinity and NaN, and documentation.
+ </li>
+<li class="listitem">
+ Added tests and documentation of changesign from Johan Rade.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h8"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_46_1"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_46_1">Boost-1.46.1</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Fixed issues #5095,
+ #5113.
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.history1.h9"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_46_0"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_46_0">Boost-1.46.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added Wald, Inverse Gaussian and geometric distributions.
+ </li>
+<li class="listitem">
+ Added information about configuration macros.
+ </li>
+<li class="listitem">
+ Added support for mpreal as a real-numbered type.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h10"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_45_0"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_45_0">Boost-1.45.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added warnings about potential ambiguity with std random library in distribution
+ and function names.
+ </li>
+<li class="listitem">
+ Added inverse gamma distribution and inverse chi_square and scaled inverse
+ chi_square.
+ </li>
+<li class="listitem">
+ Editorial revision of documentation, and added FAQ.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h11"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_44_0"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_44_0">Boost-1.44.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Fixed incorrect range and support for Rayleigh distribution.
+ </li>
+<li class="listitem">
+ Fixed numerical error in the quantile of the Student's T distribution:
+ the function was returning garbage values for non-integer degrees of freedom
+ between 2 and 3.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h12"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_41_0"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_41_0">Boost-1.41.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Significantly improved performance for the incomplete gamma function and
+ its inverse.
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.history1.h13"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_40_0"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_40_0">Boost-1.40.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added support for MPFR as a bignum type.
+ </li>
+<li class="listitem">
+ Added some full specializations of the policy classes to reduce compile
+ times.
+ </li>
+<li class="listitem">
+ Added logistic and hypergeometric distributions, from Gautam Sewani's Google
+ Summer of Code project.
+ </li>
+<li class="listitem">
+ Added Laplace distribution submitted by Thijs van den Berg.
+ </li>
+<li class="listitem">
+ Updated performance test code to include new distributions, and improved
+ the performance of the non-central distributions.
+ </li>
+<li class="listitem">
+ Added SSE2 optimised <a class="link" href="lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a>
+ code, from Gautam Sewani's Google Summer of Code project.
+ </li>
+<li class="listitem">
+ Fixed bug in cyl_bessel_i that used an incorrect approximation for ν = 0.5,
+ also effects the non-central Chi Square Distribution when ν = 3, see bug
+ report #2877.
+ </li>
+<li class="listitem">
+ Fixed minor bugs #2873.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h14"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_38_0"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_38_0">Boost-1.38.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added Johan Råde's optimised floating point classification routines.
+ </li>
+<li class="listitem">
+ Fixed code so that it compiles in GCC's -pedantic mode (bug report #1451).
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h15"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_37_0"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_37_0">Boost-1.37.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Improved accuracy and testing of the inverse hypergeometric functions.
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.history1.h16"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_36_0"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_36_0">Boost-1.36.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added Noncentral Chi Squared Distribution.
+ </li>
+<li class="listitem">
+ Added Noncentral Beta Distribution.
+ </li>
+<li class="listitem">
+ Added Noncentral F Distribution.
+ </li>
+<li class="listitem">
+ Added Noncentral T Distribution.
+ </li>
+<li class="listitem">
+ Added Exponential Integral Functions.
+ </li>
+<li class="listitem">
+ Added Zeta Function.
+ </li>
+<li class="listitem">
+ Added Rounding and Truncation functions.
+ </li>
+<li class="listitem">
+ Added Compile time powers of runtime bases.
+ </li>
+<li class="listitem">
+ Added SSE2 optimizations for Lanczos evaluation.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h17"></a>
+ <span class="phrase"><a name="math_toolkit.history1.boost_1_35_0_post_review_first_o"></a></span><a class="link" href="history1.html#math_toolkit.history1.boost_1_35_0_post_review_first_o">Boost-1.35.0:
+ Post Review First Official Release</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added Policy based framework that allows fine grained control over function
+ behaviour.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Breaking change:</strong></span> Changed default behaviour
+ for domain, pole and overflow errors to throw an exception (based on review
+ feedback), this behaviour can be customised using <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a>'s.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Breaking change:</strong></span> Changed exception thrown
+ when an internal evaluation error occurs to boost::math::evaluation_error.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Breaking change:</strong></span> Changed discrete quantiles
+ to return an integer result: this is anything up to 20 times faster than
+ finding the true root, this behaviour can be customised using <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a>'s.
+ </li>
+<li class="listitem">
+ Polynomial/rational function evaluation is now customisable and hopefully
+ faster than before.
+ </li>
+<li class="listitem">
+ Added performance test program.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h18"></a>
+ <span class="phrase"><a name="math_toolkit.history1.milestone_4_second_review_candid"></a></span><a class="link" href="history1.html#math_toolkit.history1.milestone_4_second_review_candid">Milestone
+ 4: Second Review Candidate (1st March 2007)</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Moved Xiaogang Zhang's Bessel Functions code into the library, and brought
+ them into line with the rest of the code.
+ </li>
+<li class="listitem">
+ Added C# "Distribution Explorer" demo application.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h19"></a>
+ <span class="phrase"><a name="math_toolkit.history1.milestone_3_first_review_candida"></a></span><a class="link" href="history1.html#math_toolkit.history1.milestone_3_first_review_candida">Milestone
+ 3: First Review Candidate (31st Dec 2006)</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Implemented the main probability distribution and density functions.
+ </li>
+<li class="listitem">
+ Implemented digamma.
+ </li>
+<li class="listitem">
+ Added more factorial functions.
+ </li>
+<li class="listitem">
+ Implemented the Hermite, Legendre and Laguerre polynomials plus the spherical
+ harmonic functions from TR1.
+ </li>
+<li class="listitem">
+ Moved Xiaogang Zhang's elliptic integral code into the library, and brought
+ them into line with the rest of the code.
+ </li>
+<li class="listitem">
+ Moved Hubert Holin's existing Boost.Math special functions into this library
+ and brought them into line with the rest of the code.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h20"></a>
+ <span class="phrase"><a name="math_toolkit.history1.milestone_2_released_september_1"></a></span><a class="link" href="history1.html#math_toolkit.history1.milestone_2_released_september_1">Milestone
+ 2: Released September 10th 2006</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Implement preview release of the statistical distributions.
+ </li>
+<li class="listitem">
+ Added statistical distributions tutorial.
+ </li>
+<li class="listitem">
+ Implemented root finding algorithms.
+ </li>
+<li class="listitem">
+ Implemented the inverses of the incomplete gamma and beta functions.
+ </li>
+<li class="listitem">
+ Rewrite erf/erfc as rational approximations (valid to 128-bit precision).
+ </li>
+<li class="listitem">
+ Integrated the statistical results generated from the test data with Boost.Test:
+ uses a database of expected results, indexed by test, floating point type,
+ platform, and compiler.
+ </li>
+<li class="listitem">
+ Improved lgamma near 1 and 2 (rational approximations).
+ </li>
+<li class="listitem">
+ Improved erf/erfc inverses (rational approximations).
+ </li>
+<li class="listitem">
+ Implemented Rational function generation (the Remez method).
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history1.h21"></a>
+ <span class="phrase"><a name="math_toolkit.history1.milestone_1_released_march_31st_"></a></span><a class="link" href="history1.html#math_toolkit.history1.milestone_1_released_march_31st_">Milestone
+ 1: Released March 31st 2006</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Implement gamma/beta/erf functions along with their incomplete counterparts.
+ </li>
+<li class="listitem">
+ Generate high quality test data, against which future improvements can
+ be judged.
+ </li>
+<li class="listitem">
+ Provide tools for the evaluation of infinite series, continued fractions,
+ and rational functions.
+ </li>
+<li class="listitem">
+ Provide tools for testing against tabulated test data, and collecting statistics
+ on error rates.
+ </li>
+<li class="listitem">
+ Provide sufficient docs for people to be able to find their way around
+ the library.
+ </li>
+</ul></div>
+<p>
+ SVN Revisions:
+ </p>
+<p>
+ Sandbox and trunk last synchonised at revision: .
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="building.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="overview_tr1.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/history2.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/history2.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,621 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>History and What's New</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../status.html" title="Chapter 16. Library Status">
+<link rel="prev" href="../status.html" title="Chapter 16. Library Status">
+<link rel="next" href="issues.html" title="Known Issues, and TODO List">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../status.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../status.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="issues.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_history2">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.history2"></a><a class="link" href="history2.html" title="History and What's New">History and What's New</a>
+</h2></div></div></div>
+<p>
+ Currently open bug reports can be viewed here.
+ </p>
+<p>
+ All bug reports including closed ones can be viewed here.
+ </p>
+<h5>
+<a name="math_toolkit.history2.h0"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_54"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_54">Boost-1.54</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added many references to Boost.Multiprecision and <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>
+ as an example of a User-defined Type (UDT).
+ </li>
+<li class="listitem">
+ Added Clang to list of supported compilers.
+ </li>
+<li class="listitem">
+ Fixed constants to use a thread-safe cache of computed values when used
+ at arbitrary precision.
+ </li>
+<li class="listitem">
+ Added finding zeros of Bessel functions <code class="computeroutput"><span class="identifier">cyl_bessel_j_zero</span></code>,
+ <code class="computeroutput"><span class="identifier">cyl_neumann_zero</span></code>, <code class="computeroutput"><span class="identifier">air_ai_zeros</span></code> and <code class="computeroutput"><span class="identifier">air_bi_zeros</span></code>(by
+ Christopher Kormanyos).
+ </li>
+<li class="listitem">
+ More accuracy improvements to the Bessel J and Y functions from Rocco Romeo.
+ </li>
+<li class="listitem">
+ Fixed nasty cyclic dependency bug that caused some headers to not compile
+ #7999.
+ </li>
+<li class="listitem">
+ Fixed bug in <a class="link" href="sf_gamma/tgamma.html" title="Gamma">tgamma</a>
+ that caused spurious overflow for arguments between 142.5 and 143.
+ </li>
+<li class="listitem">
+ Fixed bug in raise_rounding_error that caused it to return an incorrect
+ result when throwing an exception is turned off #7905.
+ </li>
+<li class="listitem">
+ Added minimal __float128 support.
+ </li>
+<li class="listitem">
+ Fixed bug in edge-cases of poisson quantile #8308.
+ </li>
+<li class="listitem">
+ Adjusted heuristics used in Halley iteration to cope with inverting the
+ incomplete beta in tricky regions where the derivative is flatlining. Example
+ is computing the quantile of the Fisher F distribution for probabilities
+ smaller than machine epsilon. See ticket #8314.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h1"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_53"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_53">Boost-1.53</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Fixed issues #7325,
+ #7415
+ and #7416,
+ #7183,
+ #7649,
+ #7694,
+ #4445,
+ #7492,
+ #7891,
+ #7429.
+ </li>
+<li class="listitem">
+ Fixed mistake in calculating pooled standard deviation in two-sample students
+ t example #7402.
+ </li>
+<li class="listitem">
+ Improve complex acos/asin/atan, see #7290,
+ #7291.
+ </li>
+<li class="listitem">
+ Improve accuracy in some corner cases of <a class="link" href="bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ and <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>/<a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>
+ thanks to suggestions from Rocco Romeo.
+ </li>
+<li class="listitem">
+ Improve accuracy of Bessel J and Y for integer orders thanks to suggestions
+ from Rocco Romeo.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h2"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_52"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_52">Boost-1.52</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Corrected moments for small degrees of freedom #7177
+ (reported by Thomas Mang).
+ </li>
+<li class="listitem">
+ Added <a class="link" href="airy.html" title="Airy Functions">Airy functions</a> and <a class="link" href="jacobi.html" title="Jacobi Elliptic Functions">Jacobi Elliptic functions</a>.
+ </li>
+<li class="listitem">
+ Corrected failure to detect bad parameters in many distributions #6934 (reported
+ by Florian Schoppmann) by adding a function check_out_of_range to test
+ many possible bad parameters. This test revealed several distributions
+ where the checks for bad parameters were ineffective, and these have been
+ rectified.
+ </li>
+<li class="listitem">
+ Fixed issue in Hankel functions that causes incorrect values to be returned
+ for <span class="emphasis"><em>x < 0</em></span> and ν odd, see #7135.
+ </li>
+<li class="listitem">
+ Fixed issues #6517,
+ #6362,
+ #7053,
+ #2693,
+ #6937,
+ #7099.
+ </li>
+<li class="listitem">
+ Permitted infinite degrees of freedom #7259
+ implemented using the normal distribution (requested by Thomas Mang).
+ </li>
+<li class="listitem">
+ Much enhanced accuracy for large degrees of freedom ν and/or large non-centrality
+ δ
+by switching to use the Students t distribution (or Normal distribution
+ for infinite degrees of freedom) centered at delta, when δ / (4 * ν) <
+ epsilon for the floating-point type in use. #7259.
+ It was found that the incomplete beta was suffering from serious cancellation
+ errors when degrees of freedom was very large. (That has now been fixed
+ in our code, but any code based on Didonato and Morris's original papers
+ (probably every implementation out there actually) will have the same issue).
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h3"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_51"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_51">Boost-1.51</a>
+ </h5>
+<p>
+ See Boost-1.52 - some items were added but not listed in time for the release.
+ </p>
+<h5>
+<a name="math_toolkit.history2.h4"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_50"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_50">Boost-1.50</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Promoted math constants to be 1st class citizens, including convenient
+ access to the most widely used built-in float, double, long double via
+ three namespaces.
+ </li>
+<li class="listitem">
+ Added the Owen's T function and Skew Normal distribution written by Benjamin
+ Sobotta: see <a class="link" href="owens_t.html" title="Owen's T function">Owens T</a> and skew_normal_distrib.
+ </li>
+<li class="listitem">
+ Added Hankel functions <a class="link" href="hankel/cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_1</a>,
+ <a class="link" href="hankel/cyl_hankel.html" title="Cyclic Hankel Functions">cyl_hankel_2</a>, <a class="link" href="hankel/sph_hankel.html" title="Spherical Hankel Functions">sph_hankel_1</a> and <a class="link" href="hankel/sph_hankel.html" title="Spherical Hankel Functions">sph_hankel_2</a>.
+ </li>
+<li class="listitem">
+ Corrected issue <a href="https://svn.boost.org/trac/boost/ticket/6627" target="_top">#6627
+ nonfinite_num_put formatting of 0.0 is incorrect</a> based on a patch
+ submitted by K R Walker.
+ </li>
+<li class="listitem">
+ Changed constant initialization mechanism so that it is thread safe even
+ for user-defined types, also so that user defined types get the full precision
+ of the constant, even when <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> does not. So for example
+ 128-bit rational approximations will work with UDT's and do the right thing,
+ even though <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ may be only 64 or 80 bits.
+ </li>
+<li class="listitem">
+ Fixed issue in <code class="computeroutput"><span class="identifier">bessel_jy</span></code>
+ which causes Y<sub>8.5</sub>(4π) to yield a NaN.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h5"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_49"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_49">Boost-1.49</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Deprecated wrongly named <code class="computeroutput"><span class="identifier">twothirds</span></code>
+ math constant in favour of <code class="computeroutput"><span class="identifier">two_thirds</span></code>
+ (with underscore separator). (issue #6199).
+ </li>
+<li class="listitem">
+ Refactored test data and some special function code to improve support
+ for arbitary precision and/or expression-template-enabled types.
+ </li>
+<li class="listitem">
+ Added new faster zeta function evaluation method.
+ </li>
+</ul></div>
+<p>
+ Fixed issues:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Corrected CDF complement for Laplace distribution (issue #6151).
+ </li>
+<li class="listitem">
+ Corrected branch cuts on the complex inverse trig functions, to handle
+ signed zeros (issue #6171).
+ </li>
+<li class="listitem">
+ Fixed bug in <code class="computeroutput"><span class="identifier">bessel_yn</span></code>
+ which caused incorrect overflow errors to be raised for negative <span class="emphasis"><em>n</em></span>
+ (issue #6367).
+ </li>
+<li class="listitem">
+ Also fixed minor/cosmetic/configuration issues #6120,
+ #6191,
+ #5982,
+ #6130,
+ #6234,
+ #6307,
+ #6192.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h6"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_48"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_48">Boost-1.48</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added new series evaluation methods to the cyclic Bessel I, J, K and Y
+ functions. Also taken great care to avoid spurious over and underflow of
+ these functions. Fixes issue #5560
+ </li>
+<li class="listitem">
+ Added an example of using Inverse Chi-Squared distribution for Bayesian
+ statistics, provided by Thomas Mang.
+ </li>
+<li class="listitem">
+ Added tests to use improved version of lexical_cast which handles C99 nonfinites
+ without using globale facets.
+ </li>
+<li class="listitem">
+ Corrected wrong out-of-bound uniform distribution CDF complement values
+ #5733.
+ </li>
+<li class="listitem">
+ Enabled long double support on OpenBSD (issue #6014).
+ </li>
+<li class="listitem">
+ Changed nextafter and related functions to behave in the same way as other
+ implementations - so that nextafter(+INF, 0) is a finite value (issue
+ #5832).
+ </li>
+<li class="listitem">
+ Changed tuple include configuration to fix issue when using in conjunction
+ with Boost.Tr1 (issue #5934).
+ </li>
+<li class="listitem">
+ Changed class eps_tolerance to behave correctly when both ends of the range
+ are zero (issue #6001).
+ </li>
+<li class="listitem">
+ Fixed missing include guards on prime.hpp (issue #5927).
+ </li>
+<li class="listitem">
+ Removed unused/undocumented constants from constants.hpp (issue #5982).
+ </li>
+<li class="listitem">
+ Fixed missing std:: prefix in nonfinite_num_facets.hpp (issue #5914).
+ </li>
+<li class="listitem">
+ Minor patches for Cray compiler compatibility.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h7"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_47"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_47">Boost-1.47</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added changesign function to sign.hpp to facilitate addition of nonfinite
+ facets.
+ </li>
+<li class="listitem">
+ Addition of nonfinite facets from Johan Rade, with tests, examples of use
+ for C99 format infinity and NaN, and documentation.
+ </li>
+<li class="listitem">
+ Added tests and documentation of changesign from Johan Rade.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h8"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_46_1"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_46_1">Boost-1.46.1</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Fixed issues #5095,
+ #5113.
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.history2.h9"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_46_0"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_46_0">Boost-1.46.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added Wald, Inverse Gaussian and geometric distributions.
+ </li>
+<li class="listitem">
+ Added information about configuration macros.
+ </li>
+<li class="listitem">
+ Added support for mpreal as a real-numbered type.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h10"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_45_0"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_45_0">Boost-1.45.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added warnings about potential ambiguity with std random library in distribution
+ and function names.
+ </li>
+<li class="listitem">
+ Added inverse gamma distribution and inverse chi_square and scaled inverse
+ chi_square.
+ </li>
+<li class="listitem">
+ Editorial revision of documentation, and added FAQ.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h11"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_44_0"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_44_0">Boost-1.44.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Fixed incorrect range and support for Rayleigh distribution.
+ </li>
+<li class="listitem">
+ Fixed numerical error in the quantile of the Student's T distribution:
+ the function was returning garbage values for non-integer degrees of freedom
+ between 2 and 3.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h12"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_41_0"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_41_0">Boost-1.41.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Significantly improved performance for the incomplete gamma function and
+ its inverse.
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.history2.h13"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_40_0"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_40_0">Boost-1.40.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added support for MPFR as a bignum type.
+ </li>
+<li class="listitem">
+ Added some full specializations of the policy classes to reduce compile
+ times.
+ </li>
+<li class="listitem">
+ Added logistic and hypergeometric distributions, from Gautam Sewani's Google
+ Summer of Code project.
+ </li>
+<li class="listitem">
+ Added Laplace distribution submitted by Thijs van den Berg.
+ </li>
+<li class="listitem">
+ Updated performance test code to include new distributions, and improved
+ the performance of the non-central distributions.
+ </li>
+<li class="listitem">
+ Added SSE2 optimised <a class="link" href="lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a>
+ code, from Gautam Sewani's Google Summer of Code project.
+ </li>
+<li class="listitem">
+ Fixed bug in cyl_bessel_i that used an incorrect approximation for ν = 0.5,
+ also effects the non-central Chi Square Distribution when ν = 3, see bug
+ report #2877.
+ </li>
+<li class="listitem">
+ Fixed minor bugs #2873.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h14"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_38_0"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_38_0">Boost-1.38.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added Johan Råde's optimised floating point classification routines.
+ </li>
+<li class="listitem">
+ Fixed code so that it compiles in GCC's -pedantic mode (bug report #1451).
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h15"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_37_0"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_37_0">Boost-1.37.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Improved accuracy and testing of the inverse hypergeometric functions.
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.history2.h16"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_36_0"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_36_0">Boost-1.36.0</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added Noncentral Chi Squared Distribution.
+ </li>
+<li class="listitem">
+ Added Noncentral Beta Distribution.
+ </li>
+<li class="listitem">
+ Added Noncentral F Distribution.
+ </li>
+<li class="listitem">
+ Added Noncentral T Distribution.
+ </li>
+<li class="listitem">
+ Added Exponential Integral Functions.
+ </li>
+<li class="listitem">
+ Added Zeta Function.
+ </li>
+<li class="listitem">
+ Added Rounding and Truncation functions.
+ </li>
+<li class="listitem">
+ Added Compile time powers of runtime bases.
+ </li>
+<li class="listitem">
+ Added SSE2 optimizations for Lanczos evaluation.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h17"></a>
+ <span class="phrase"><a name="math_toolkit.history2.boost_1_35_0_post_review_first_o"></a></span><a class="link" href="history2.html#math_toolkit.history2.boost_1_35_0_post_review_first_o">Boost-1.35.0:
+ Post Review First Official Release</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added Policy based framework that allows fine grained control over function
+ behaviour.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Breaking change:</strong></span> Changed default behaviour
+ for domain, pole and overflow errors to throw an exception (based on review
+ feedback), this behaviour can be customised using <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a>'s.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Breaking change:</strong></span> Changed exception thrown
+ when an internal evaluation error occurs to boost::math::evaluation_error.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Breaking change:</strong></span> Changed discrete quantiles
+ to return an integer result: this is anything up to 20 times faster than
+ finding the true root, this behaviour can be customised using <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a>'s.
+ </li>
+<li class="listitem">
+ Polynomial/rational function evaluation is now customisable and hopefully
+ faster than before.
+ </li>
+<li class="listitem">
+ Added performance test program.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h18"></a>
+ <span class="phrase"><a name="math_toolkit.history2.milestone_4_second_review_candid"></a></span><a class="link" href="history2.html#math_toolkit.history2.milestone_4_second_review_candid">Milestone
+ 4: Second Review Candidate (1st March 2007)</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Moved Xiaogang Zhang's Bessel Functions code into the library, and brought
+ them into line with the rest of the code.
+ </li>
+<li class="listitem">
+ Added C# "Distribution Explorer" demo application.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h19"></a>
+ <span class="phrase"><a name="math_toolkit.history2.milestone_3_first_review_candida"></a></span><a class="link" href="history2.html#math_toolkit.history2.milestone_3_first_review_candida">Milestone
+ 3: First Review Candidate (31st Dec 2006)</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Implemented the main probability distribution and density functions.
+ </li>
+<li class="listitem">
+ Implemented digamma.
+ </li>
+<li class="listitem">
+ Added more factorial functions.
+ </li>
+<li class="listitem">
+ Implemented the Hermite, Legendre and Laguerre polynomials plus the spherical
+ harmonic functions from TR1.
+ </li>
+<li class="listitem">
+ Moved Xiaogang Zhang's elliptic integral code into the library, and brought
+ them into line with the rest of the code.
+ </li>
+<li class="listitem">
+ Moved Hubert Holin's existing Boost.Math special functions into this library
+ and brought them into line with the rest of the code.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h20"></a>
+ <span class="phrase"><a name="math_toolkit.history2.milestone_2_released_september_1"></a></span><a class="link" href="history2.html#math_toolkit.history2.milestone_2_released_september_1">Milestone
+ 2: Released September 10th 2006</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Implement preview release of the statistical distributions.
+ </li>
+<li class="listitem">
+ Added statistical distributions tutorial.
+ </li>
+<li class="listitem">
+ Implemented root finding algorithms.
+ </li>
+<li class="listitem">
+ Implemented the inverses of the incomplete gamma and beta functions.
+ </li>
+<li class="listitem">
+ Rewrite erf/erfc as rational approximations (valid to 128-bit precision).
+ </li>
+<li class="listitem">
+ Integrated the statistical results generated from the test data with Boost.Test:
+ uses a database of expected results, indexed by test, floating point type,
+ platform, and compiler.
+ </li>
+<li class="listitem">
+ Improved lgamma near 1 and 2 (rational approximations).
+ </li>
+<li class="listitem">
+ Improved erf/erfc inverses (rational approximations).
+ </li>
+<li class="listitem">
+ Implemented Rational function generation (the Remez method).
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.history2.h21"></a>
+ <span class="phrase"><a name="math_toolkit.history2.milestone_1_released_march_31st_"></a></span><a class="link" href="history2.html#math_toolkit.history2.milestone_1_released_march_31st_">Milestone
+ 1: Released March 31st 2006</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Implement gamma/beta/erf functions along with their incomplete counterparts.
+ </li>
+<li class="listitem">
+ Generate high quality test data, against which future improvements can
+ be judged.
+ </li>
+<li class="listitem">
+ Provide tools for the evaluation of infinite series, continued fractions,
+ and rational functions.
+ </li>
+<li class="listitem">
+ Provide tools for testing against tabulated test data, and collecting statistics
+ on error rates.
+ </li>
+<li class="listitem">
+ Provide sufficient docs for people to be able to find their way around
+ the library.
+ </li>
+</ul></div>
+<p>
+ SVN Revisions:
+ </p>
+<p>
+ Sandbox and trunk last synchonised at revision: .
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../status.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../status.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="issues.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Utilities & internals</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../toolkit.html" title="Chapter 11. Internals (Series, Rationals and Continued Fractions, Root Finding, Function Minimization, Testing and Development Tools)">
+<link rel="prev" href="internals_overview.html" title="Overview">
+<link rel="next" href="internals1/series_evaluation.html" title="Series Evaluation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="internals_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="internals1/series_evaluation.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.internals1"></a><a class="link" href="internals1.html" title="Utilities & internals">Utilities & internals</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Series Evaluation</span></dt>
+<dt><span class="section">Continued Fraction Evaluation</span></dt>
+<dt><span class="section"><a href="internals1/rational.html">Polynomial and Rational
+ Function Evaluation</a></span></dt>
+<dt><span class="section"><a href="internals1/roots.html">Root Finding With Derivatives:
+ Newton-Raphson, Halley & Schroeder</a></span></dt>
+<dt><span class="section"><a href="internals1/roots2.html">Root Finding Without
+ Derivatives: Bisection, Bracket and TOMS748</a></span></dt>
+<dt><span class="section"><a href="internals1/minima.html">Locating Function Minima:
+ Brent's algorithm</a></span></dt>
+<dt><span class="section">Tuples</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="internals_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="internals1/series_evaluation.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals1/cf.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals1/cf.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,271 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Continued Fraction Evaluation</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals1.html" title="Utilities & internals">
+<link rel="prev" href="series_evaluation.html" title="Series Evaluation">
+<link rel="next" href="rational.html" title="Polynomial and Rational Function Evaluation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="series_evaluation.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rational.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals1_cf">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals1.cf"></a><a class="link" href="cf.html" title="Continued Fraction Evaluation">Continued Fraction Evaluation</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.internals1.cf.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.cf.synopsis"></a></span><a class="link" href="cf.html#math_toolkit.internals1.cf.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">fraction</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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">namespace</span> <span class="identifier">tools</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Gen</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">fraction_traits</span><span class="special"><</span><span class="identifier">Gen</span><span class="special">>::</span><span class="identifier">result_type</span>
+ <span class="identifier">continued_fraction_b</span><span class="special">(</span><span class="identifier">Gen</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">tolerance</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_terms</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Gen</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">fraction_traits</span><span class="special"><</span><span class="identifier">Gen</span><span class="special">>::</span><span class="identifier">result_type</span>
+ <span class="identifier">continued_fraction_b</span><span class="special">(</span><span class="identifier">Gen</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">tolerance</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Gen</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">fraction_traits</span><span class="special"><</span><span class="identifier">Gen</span><span class="special">>::</span><span class="identifier">result_type</span>
+ <span class="identifier">continued_fraction_a</span><span class="special">(</span><span class="identifier">Gen</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">tolerance</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_terms</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Gen</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">fraction_traits</span><span class="special"><</span><span class="identifier">Gen</span><span class="special">>::</span><span class="identifier">result_type</span>
+ <span class="identifier">continued_fraction_a</span><span class="special">(</span><span class="identifier">Gen</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">tolerance</span><span class="special">)</span>
+
+<span class="comment">//</span>
+<span class="comment">// These interfaces are present for legacy reasons, and are now deprecated:</span>
+<span class="comment">//</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Gen</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">fraction_traits</span><span class="special"><</span><span class="identifier">Gen</span><span class="special">>::</span><span class="identifier">result_type</span>
+ <span class="identifier">continued_fraction_b</span><span class="special">(</span><span class="identifier">Gen</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Gen</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">fraction_traits</span><span class="special"><</span><span class="identifier">Gen</span><span class="special">>::</span><span class="identifier">result_type</span>
+ <span class="identifier">continued_fraction_b</span><span class="special">(</span><span class="identifier">Gen</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_terms</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Gen</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">fraction_traits</span><span class="special"><</span><span class="identifier">Gen</span><span class="special">>::</span><span class="identifier">result_type</span>
+ <span class="identifier">continued_fraction_a</span><span class="special">(</span><span class="identifier">Gen</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Gen</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">fraction_traits</span><span class="special"><</span><span class="identifier">Gen</span><span class="special">>::</span><span class="identifier">result_type</span>
+ <span class="identifier">continued_fraction_a</span><span class="special">(</span><span class="identifier">Gen</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_terms</span><span class="special">);</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.internals1.cf.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.cf.description"></a></span><a class="link" href="cf.html#math_toolkit.internals1.cf.description">Description</a>
+ </h5>
+<p>
+ <a href="http://en.wikipedia.org/wiki/Continued_fraction" target="_top">Continued fractions
+ are a common method of approximation. </a> These functions all evaluate
+ the continued fraction described by the <span class="emphasis"><em>generator</em></span> type
+ argument. The functions with an "_a" suffix evaluate the fraction:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/fraction2.png"></span>
+ </p>
+<p>
+ and those with a "_b" suffix evaluate the fraction:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/fraction1.png"></span>
+ </p>
+<p>
+ This latter form is somewhat more natural in that it corresponds with the
+ usual definition of a continued fraction, but note that the first <span class="emphasis"><em>a</em></span>
+ value returned by the generator is discarded. Further, often the first <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span> values in a continued fraction have different
+ defining equations to the remaining terms, which may make the "_a"
+ suffixed form more appropriate.
+ </p>
+<p>
+ The generator type should be a function object which supports the following
+ operations:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Gen::result_type
+ </p>
+ </td>
+<td>
+ <p>
+ The type that is the result of invoking operator(). This can be
+ either an arithmetic type, or a std::pair<> of arithmetic
+ types.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ g()
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an object of type Gen::result_type.
+ </p>
+ <p>
+ Each time this operator is called then the next pair of <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span> values is returned. Or, if result_type
+ is an arithmetic type, then the next <span class="emphasis"><em>b</em></span> value
+ is returned and all the <span class="emphasis"><em>a</em></span> values are assumed
+ to 1.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ In all the continued fraction evaluation functions the <span class="emphasis"><em>tolerance</em></span>
+ parameter is the precision desired in the result, evaluation of the fraction
+ will continue until the last term evaluated leaves the relative error in
+ the result less than <span class="emphasis"><em>tolerance</em></span>. The deprecated interfaces
+ take a number of digits precision here, internally they just convert this
+ to a tolerance and forward call.
+ </p>
+<p>
+ If the optional <span class="emphasis"><em>max_terms</em></span> parameter is specified then
+ no more than <span class="emphasis"><em>max_terms</em></span> calls to the generator will be
+ made, and on output, <span class="emphasis"><em>max_terms</em></span> will be set to actual
+ number of calls made. This facility is particularly useful when profiling
+ a continued fraction for convergence.
+ </p>
+<h5>
+<a name="math_toolkit.internals1.cf.h2"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.cf.implementation"></a></span><a class="link" href="cf.html#math_toolkit.internals1.cf.implementation">Implementation</a>
+ </h5>
+<p>
+ Internally these algorithms all use the modified Lentz algorithm: refer to
+ Numeric Recipes in C++, W. H. Press et all, chapter 5, (especially 5.2 Evaluation
+ of continued fractions, p 175 - 179) for more information, also Lentz, W.J.
+ 1976, Applied Optics, vol. 15, pp. 668-671.
+ </p>
+<h5>
+<a name="math_toolkit.internals1.cf.h3"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.cf.examples"></a></span><a class="link" href="cf.html#math_toolkit.internals1.cf.examples">Examples</a>
+ </h5>
+<p>
+ The <a href="http://en.wikipedia.org/wiki/Golden_ratio" target="_top">golden ratio phi
+ = 1.618033989...</a> can be computed from the simplest continued fraction
+ of all:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/fraction3.png"></span>
+ </p>
+<p>
+ We begin by defining a generator function:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">golden_ratio_fraction</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The golden ratio can then be computed to double precision using:
+ </p>
+<pre class="programlisting"><span class="identifier">continued_fraction_a</span><span class="special">(</span>
+ <span class="identifier">golden_ratio_fraction</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">());</span>
+</pre>
+<p>
+ It's more usual though to have to define both the <span class="emphasis"><em>a</em></span>'s
+ and the <span class="emphasis"><em>b</em></span>'s when evaluating special functions by continued
+ fractions, for example the tan function is defined by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/fraction4.png"></span>
+ </p>
+<p>
+ So its generator object would look like:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">tan_fraction</span>
+<span class="special">{</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">T</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">;</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">tan_fraction</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">a</span><span class="special">(-</span><span class="identifier">v</span><span class="special">*</span><span class="identifier">v</span><span class="special">),</span> <span class="identifier">b</span><span class="special">(-</span><span class="number">1</span><span class="special">)</span>
+ <span class="special">{}</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span><span class="special">()()</span>
+ <span class="special">{</span>
+ <span class="identifier">b</span> <span class="special">+=</span> <span class="number">2</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Notice that if the continuant is subtracted from the <span class="emphasis"><em>b</em></span>
+ terms, as is the case here, then all the <span class="emphasis"><em>a</em></span> terms returned
+ by the generator will be negative. The tangent function can now be evaluated
+ using:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">tan</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">a</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">tan_fraction</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">fract</span><span class="special">(</span><span class="identifier">a</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">a</span> <span class="special">/</span> <span class="identifier">continued_fraction_b</span><span class="special">(</span><span class="identifier">fract</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Notice that this time we're using the "_b" suffixed version to
+ evaluate the fraction: we're removing the leading <span class="emphasis"><em>a</em></span>
+ term during fraction evaluation as it's different from all the others.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="series_evaluation.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rational.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals1/minima.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals1/minima.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,113 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Locating Function Minima: Brent's algorithm</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals1.html" title="Utilities & internals">
+<link rel="prev" href="roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748">
+<link rel="next" href="tuples.html" title="Tuples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="roots2.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tuples.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals1_minima">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals1.minima"></a><a class="link" href="minima.html" title="Locating Function Minima: Brent's algorithm">Locating Function Minima:
+ Brent's algorithm</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.internals1.minima.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.minima.synopsis"></a></span><a class="link" href="minima.html#math_toolkit.internals1.minima.synopsis">synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">minima</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">brent_find_minima</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">brent_find_minima</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+</pre>
+<h5>
+<a name="math_toolkit.internals1.minima.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.minima.description"></a></span><a class="link" href="minima.html#math_toolkit.internals1.minima.description">Description</a>
+ </h5>
+<p>
+ These two functions locate the minima of the continuous function <span class="emphasis"><em>f</em></span>
+ using Brent's algorithm. Parameters are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">f</span></dt>
+<dd><p>
+ The function to minimise. The function should be smooth over the range
+ [min,max], with no maxima occurring in that interval.
+ </p></dd>
+<dt><span class="term">min</span></dt>
+<dd><p>
+ The lower endpoint of the range in which to search for the minima.
+ </p></dd>
+<dt><span class="term">max</span></dt>
+<dd><p>
+ The upper endpoint of the range in which to search for the minima.
+ </p></dd>
+<dt><span class="term">bits</span></dt>
+<dd><p>
+ The number of bits precision to which the minima should be found. Note
+ that in principle, the minima can not be located to greater accuracy
+ than the square root of machine epsilon (for 64-bit double, sqrt(1e-16)≅1e-8),
+ therefore if <span class="emphasis"><em>bits</em></span> is set to a value greater than
+ one half of the bits in type T, then the value will be ignored.
+ </p></dd>
+<dt><span class="term">max_iter</span></dt>
+<dd><p>
+ The maximum number of iterations to use in the algorithm, if not provided
+ the algorithm will just keep on going until the minima is found.
+ </p></dd>
+</dl>
+</div>
+<p>
+ <span class="bold"><strong>Returns:</strong></span> a pair containing the value of
+ the abscissa at the minima and the value of f(x) at the minima.
+ </p>
+<h5>
+<a name="math_toolkit.internals1.minima.h2"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.minima.implementation"></a></span><a class="link" href="minima.html#math_toolkit.internals1.minima.implementation">Implementation</a>
+ </h5>
+<p>
+ This is a reasonably faithful implementation of Brent's algorithm, refer
+ to:
+ </p>
+<p>
+ Brent, R.P. 1973, Algorithms for Minimization without Derivatives (Englewood
+ Cliffs, NJ: Prentice-Hall), Chapter 5.
+ </p>
+<p>
+ Numerical Recipes in C, The Art of Scientific Computing, Second Edition,
+ William H. Press, Saul A. Teukolsky, William T. Vetterling, and Brian P.
+ Flannery. Cambridge University Press. 1988, 1992.
+ </p>
+<p>
+ An algorithm with guaranteed convergence for finding a zero of a function,
+ R. P. Brent, The Computer Journal, Vol 44, 1971.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="roots2.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tuples.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals1/rational.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals1/rational.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,222 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Polynomial and Rational Function Evaluation</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals1.html" title="Utilities & internals">
+<link rel="prev" href="cf.html" title="Continued Fraction Evaluation">
+<link rel="next" href="roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="cf.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="roots.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals1_rational">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals1.rational"></a><a class="link" href="rational.html" title="Polynomial and Rational Function Evaluation">Polynomial and Rational
+ Function Evaluation</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.internals1.rational.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.rational.synopsis"></a></span><a class="link" href="rational.html#math_toolkit.internals1.rational.synopsis">synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">rational</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<pre class="programlisting"><span class="comment">// Polynomials:</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">(&</span><span class="identifier">poly</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">poly</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">U</span> <span class="identifier">evaluate_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">poly</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span>
+
+<span class="comment">// Even polynomials:</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_even_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">(&</span><span class="identifier">poly</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_even_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">poly</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">U</span> <span class="identifier">evaluate_even_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">poly</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span>
+
+<span class="comment">// Odd polynomials </span>
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_odd_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">(&</span><span class="identifier">a</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_odd_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">U</span> <span class="identifier">evaluate_odd_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">poly</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span>
+
+<span class="comment">// Rational Functions:</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_rational</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">(&</span><span class="identifier">a</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">(&</span><span class="identifier">b</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_rational</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</spa
n>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_rational</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">num</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">*</span> <span class="identifier">denom</span><span class="special">,</span> <span class="identifier">V</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">count</span><span class="special">);</span>
+</pre>
+<h5>
+<a name="math_toolkit.internals1.rational.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.rational.description"></a></span><a class="link" href="rational.html#math_toolkit.internals1.rational.description">Description</a>
+ </h5>
+<p>
+ Each of the functions come in three variants: a pair of overloaded functions
+ where the order of the polynomial or rational function is evaluated at compile
+ time, and an overload that accepts a runtime variable for the size of the
+ coefficient array. Generally speaking, compile time evaluation of the array
+ size results in better type safety, is less prone to programmer errors, and
+ may result in better optimised code. The polynomial evaluation functions
+ in particular, are specialised for various array sizes, allowing for loop
+ unrolling, and one hopes, optimal inline expansion.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">(&</span><span class="identifier">poly</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">poly</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">U</span> <span class="identifier">evaluate_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">poly</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span>
+</pre>
+<p>
+ Evaluates the polynomial
+ described by the coefficients stored in <span class="emphasis"><em>poly</em></span>.
+ </p>
+<p>
+ If the size of the array is specified at runtime, then the polynomial most
+ have order <span class="emphasis"><em>count-1</em></span> with <span class="emphasis"><em>count</em></span> coefficients.
+ Otherwise it has order <span class="emphasis"><em>N-1</em></span> with <span class="emphasis"><em>N</em></span>
+ coefficients.
+ </p>
+<p>
+ Coefficients should be stored such that the coefficients for the x<sup>i </sup> terms
+ are in poly[i].
+ </p>
+<p>
+ The types of the coefficients and of variable <span class="emphasis"><em>z</em></span> may
+ differ as long as <span class="emphasis"><em>*poly</em></span> is convertible to type <span class="emphasis"><em>U</em></span>.
+ This allows, for example, for the coefficient table to be a table of integers
+ if this is appropriate.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_even_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">(&</span><span class="identifier">poly</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_even_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">poly</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">U</span> <span class="identifier">evaluate_even_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">poly</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span>
+</pre>
+<p>
+ As above, but evaluates an even polynomial: one where all the powers of
+ <span class="emphasis"><em>z</em></span> are even numbers. Equivalent to calling <code class="computeroutput"><span class="identifier">evaluate_polynomial</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">count</span><span class="special">)</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_odd_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">(&</span><span class="identifier">a</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_odd_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">U</span> <span class="identifier">evaluate_odd_polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">poly</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span>
+</pre>
+<p>
+ As above but evaluates a polynomial where all the powers are odd numbers.
+ Equivalent to <code class="computeroutput"><span class="identifier">evaluate_polynomial</span><span class="special">(</span><span class="identifier">poly</span><span class="special">+</span><span class="number">1</span><span class="special">,</span> <span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">,</span>
+ <span class="identifier">count</span><span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">*</span>
+ <span class="identifier">z</span> <span class="special">+</span> <span class="identifier">poly</span><span class="special">[</span><span class="number">0</span><span class="special">]</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_rational</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">(&</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">(&</span><span class="identifier">denom</span><span class="special">)[</span><span class="identifier">N</span><span class="special">],</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_rational</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">num</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">U</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">denom</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">z</span><span class="special">)
;</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="identifier">V</span> <span class="identifier">evaluate_rational</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">num</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">*</span> <span class="identifier">denom</span><span class="special">,</span> <span class="identifier">V</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">count</span><span class="special">);</span>
+</pre>
+<p>
+ Evaluates the rational function (the ratio of two polynomials) described
+ by the coefficients stored in <span class="emphasis"><em>num</em></span> and <span class="emphasis"><em>demom</em></span>.
+ </p>
+<p>
+ If the size of the array is specified at runtime then both polynomials most
+ have order <span class="emphasis"><em>count-1</em></span> with <span class="emphasis"><em>count</em></span> coefficients.
+ Otherwise both polynomials have order <span class="emphasis"><em>N-1</em></span> with <span class="emphasis"><em>N</em></span>
+ coefficients.
+ </p>
+<p>
+ Array <span class="emphasis"><em>num</em></span> describes the numerator, and <span class="emphasis"><em>demon</em></span>
+ the denominator.
+ </p>
+<p>
+ Coefficients should be stored such that the coefficients for the x<sup>i </sup> terms
+ are in num[i] and denom[i].
+ </p>
+<p>
+ The types of the coefficients and of variable <span class="emphasis"><em>v</em></span> may
+ differ as long as <span class="emphasis"><em>*num</em></span> and <span class="emphasis"><em>*denom</em></span>
+ are convertible to type <span class="emphasis"><em>V</em></span>. This allows, for example,
+ for one or both of the coefficient tables to be a table of integers if this
+ is appropriate.
+ </p>
+<p>
+ These functions are designed to safely evaluate the result, even when the
+ value <span class="emphasis"><em>z</em></span> is very large. As such they do not take advantage
+ of compile time array sizes to make any optimisations. These functions are
+ best reserved for situations where <span class="emphasis"><em>z</em></span> may be large: if
+ you can be sure that numerical overflow will not occur then polynomial evaluation
+ with compile-time array sizes may offer slightly better performance.
+ </p>
+<h5>
+<a name="math_toolkit.internals1.rational.h2"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.rational.implementation"></a></span><a class="link" href="rational.html#math_toolkit.internals1.rational.implementation">Implementation</a>
+ </h5>
+<p>
+ Polynomials are evaluated by <a href="http://en.wikipedia.org/wiki/Horner_algorithm" target="_top">Horners
+ method</a>. If the array size is known at compile time then the functions
+ dispatch to size-specific implementations that unroll the evaluation loop.
+ </p>
+<p>
+ Rational evaluation is by <a href="http://en.wikipedia.org/wiki/Horner_algorithm" target="_top">Horners
+ method</a>: with the two polynomials being evaluated in parallel to make
+ the most of the processors floating-point pipeline. If <span class="emphasis"><em>v</em></span>
+ is greater than one, then the polynomials are evaluated in reverse order
+ as polynomials in <span class="emphasis"><em>1/v</em></span>: this avoids unnecessary numerical
+ overflow when the coefficients are large.
+ </p>
+<p>
+ Both the polynomial and rational function evaluation algorithms can be tuned
+ using various configuration macros to provide optimal performance for a particular
+ combination of compiler and platform. This includes support for second-order
+ Horner's methods. The various options are <a class="link" href="../tuning.html" title="Performance Tuning Macros">documented
+ here</a>. However, the performance benefits to be gained from these are
+ marginal on most current hardware, consequently it's best to run the <a class="link" href="../perf_test_app.html" title="The Performance Test Application">performance test application</a>
+ before changing the default settings.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="cf.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="roots.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals1/roots.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals1/roots.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,407 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals1.html" title="Utilities & internals">
+<link rel="prev" href="rational.html" title="Polynomial and Rational Function Evaluation">
+<link rel="next" href="roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="rational.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="roots2.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals1_roots">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals1.roots"></a><a class="link" href="roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder">Root Finding With Derivatives:
+ Newton-Raphson, Halley & Schroeder</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.internals1.roots.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots.synopsis"></a></span><a class="link" href="roots.html#math_toolkit.internals1.roots.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">roots</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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">namespace</span> <span class="identifier">tools</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">newton_raphson_iterate</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">guess</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">digits</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">newton_raphson_iterate</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">guess</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">digits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">halley_iterate</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">guess</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">digits</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">halley_iterate</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">guess</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">digits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">schroeder_iterate</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">guess</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">digits</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">schroeder_iterate</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">guess</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">digits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.internals1.roots.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots.description"></a></span><a class="link" href="roots.html#math_toolkit.internals1.roots.description">Description</a>
+ </h5>
+<p>
+ These functions all perform iterative root finding using derivatives:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">newton_raphson_iterate</span></code>
+ performs second order <a class="link" href="roots.html#math_toolkit.internals1.roots.newton">Newton-Raphson
+ iteration</a>,
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">halley_iterate</span></code> and<code class="computeroutput"><span class="identifier">schroeder_iterate</span></code> perform third order
+ <a class="link" href="roots.html#math_toolkit.internals1.roots.halley">Halley</a> and
+ <a class="link" href="roots.html#math_toolkit.internals1.roots.schroeder">Schroeder</a>
+ iteration.
+ </li>
+</ul></div>
+<p>
+ The functions all take the same parameters:
+ </p>
+<div class="variablelist">
+<p class="title"><b>Parameters of the root finding functions</b></p>
+<dl class="variablelist">
+<dt><span class="term">F f</span></dt>
+<dd>
+<p>
+ Type F must be a callable function object that accepts one parameter
+ and returns a <a class="link" href="tuples.html" title="Tuples">boost::math::tuple</a>:
+ </p>
+<p>
+ For the second order iterative methods (<a href="http://en.wikipedia.org/wiki/Newton_Raphson" target="_top">Newton
+ Raphson</a>) the <a class="link" href="tuples.html" title="Tuples">boost::math::tuple</a>
+ should have <span class="bold"><strong>two</strong></span> elements containing
+ the evaluation of the function and its first derivative.
+ </p>
+<p>
+ For the third order methods (Halley
+ and Schroeder) the <a class="link" href="tuples.html" title="Tuples">boost::math::tuple</a>
+ should have <span class="bold"><strong>three</strong></span> elements containing
+ the evaluation of the function and its first and second derivatives.
+ </p>
+</dd>
+<dt><span class="term">T guess</span></dt>
+<dd><p>
+ The initial starting value. A good guess is crucial to quick convergence!
+ </p></dd>
+<dt><span class="term">T min</span></dt>
+<dd><p>
+ The minimum possible value for the result, this is used as an initial
+ lower bracket.
+ </p></dd>
+<dt><span class="term">T max</span></dt>
+<dd><p>
+ The maximum possible value for the result, this is used as an initial
+ upper bracket.
+ </p></dd>
+<dt><span class="term">int digits</span></dt>
+<dd><p>
+ The desired number of binary digits.
+ </p></dd>
+<dt><span class="term">uintmax_t max_iter</span></dt>
+<dd><p>
+ An optional maximum number of iterations to perform.
+ </p></dd>
+</dl>
+</div>
+<p>
+ When using these functions you should note that:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Default max_iter = <code class="computeroutput"><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">>::</span><span class="identifier">max</span><span class="special">)()</span></code> is effectively 'iterate for ever'!.
+ </li>
+<li class="listitem">
+ They may be very sensitive to the initial guess, typically they converge
+ very rapidly if the initial guess has two or three decimal digits correct.
+ However convergence can be no better than bisection, or in some rare
+ cases, even worse than bisection if the initial guess is a long way from
+ the correct value and the derivatives are close to zero.
+ </li>
+<li class="listitem">
+ These functions include special cases to handle zero first (and second
+ where appropriate) derivatives, and fall back to bisection in this case.
+ However, it is helpful if functor F is defined to return an arbitrarily
+ small value <span class="emphasis"><em>of the correct sign</em></span> rather than zero.
+ </li>
+<li class="listitem">
+ If the derivative at the current best guess for the result is infinite
+ (or very close to being infinite) then these functions may terminate
+ prematurely. A large first derivative leads to a very small next step,
+ triggering the termination condition. Derivative based iteration may
+ not be appropriate in such cases.
+ </li>
+<li class="listitem">
+ If the function is 'Really Well Behaved' (monotonic and has only one
+ root) the bracket bounds min and max may as well be set to the widest
+ limits like zero and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max</span><span class="special">()</span></code>.
+ </li>
+<li class="listitem">
+ But if the function more complex and may have more than one root or a
+ pole, the choice of bounds is protection against jumping out to seek
+ the 'wrong' root.
+ </li>
+<li class="listitem">
+ These functions fall back to bisection if the next computed step would
+ take the next value out of bounds. The bounds are updated after each
+ step to ensure this leads to convergence. However, a good initial guess
+ backed up by asymptotically-tight bounds will improve performance no
+ end - rather than relying on bisection.
+ </li>
+<li class="listitem">
+ The value of <span class="emphasis"><em>digits</em></span> is crucial to good performance
+ of these functions, if it is set too high then at best you will get one
+ extra (unnecessary) iteration, and at worst the last few steps will proceed
+ by bisection. Remember that the returned value can never be more accurate
+ than f(x) can be evaluated, and that if f(x) suffers from cancellation
+ errors as it tends to zero then the computed steps will be effectively
+ random. The value of <span class="emphasis"><em>digits</em></span> should be set so that
+ iteration terminates before this point: remember that for second and
+ third order methods the number of correct digits in the result is increasing
+ quite substantially with each iteration, <span class="emphasis"><em>digits</em></span>
+ should be set by experiment so that the final iteration just takes the
+ next value into the zone where f(x) becomes inaccurate.
+ </li>
+<li class="listitem">
+ To get the binary digits of accuracy, use policies::get_max_root_iterations<Policy>()).
+ </li>
+<li class="listitem">
+ If you need some diagnostic output to see what is going on, you can
+ <code class="computeroutput"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_INSTRUMENT</span></code>
+ before the <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">roots</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, and also ensure that display of
+ all the possibly significant digits with <code class="computeroutput"> <span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">)</span></code>: but be warned, this may produce copious
+ output!
+ </li>
+<li class="listitem">
+ Finally: you may well be able to do better than these functions by hand-coding
+ the heuristics used so that they are tailored to a specific function.
+ You may also be able to compute the ratio of derivatives used by these
+ methods more efficiently than computing the derivatives themselves. As
+ ever, algebraic simplification can be a big win.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.internals1.roots.h2"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots.newton"></a></span><a class="link" href="roots.html#math_toolkit.internals1.roots.newton">Newton
+ Raphson Method</a>
+ </h5>
+<p>
+ Given an initial guess x0 the subsequent values are computed using:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/roots1.png"></span>
+ </p>
+<p>
+ Out of bounds steps revert to bisection of the current bounds.
+ </p>
+<p>
+ Under ideal conditions, the number of correct digits doubles with each iteration.
+ </p>
+<h5>
+<a name="math_toolkit.internals1.roots.h3"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots.halley"></a></span><a class="link" href="roots.html#math_toolkit.internals1.roots.halley">Halley's
+ Method</a>
+ </h5>
+<p>
+ Given an initial guess x0 the subsequent values are computed using:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/roots2.png"></span>
+ </p>
+<p>
+ Over-compensation by the second derivative (one which would proceed in the
+ wrong direction) causes the method to revert to a Newton-Raphson step.
+ </p>
+<p>
+ Out of bounds steps revert to bisection of the current bounds.
+ </p>
+<p>
+ Under ideal conditions, the number of correct digits trebles with each iteration.
+ </p>
+<h5>
+<a name="math_toolkit.internals1.roots.h4"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots.schroeder"></a></span><a class="link" href="roots.html#math_toolkit.internals1.roots.schroeder">Schroeder's
+ Method</a>
+ </h5>
+<p>
+ Given an initial guess x0 the subsequent values are computed using:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/roots3.png"></span>
+ </p>
+<p>
+ Over-compensation by the second derivative (one which would proceed in the
+ wrong direction) causes the method to revert to a Newton-Raphson step. Likewise
+ a Newton step is used whenever that Newton step would change the next value
+ by more than 10%.
+ </p>
+<p>
+ Out of bounds steps revert to bisection of the current bounds.
+ </p>
+<p>
+ Under ideal conditions, the number of correct digits trebles with each iteration.
+ </p>
+<h5>
+<a name="math_toolkit.internals1.roots.h5"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots.example"></a></span><a class="link" href="roots.html#math_toolkit.internals1.roots.example">Example</a>
+ </h5>
+<p>
+ Let's suppose we want to find the cube root of a number: the equation we
+ want to solve along with its derivatives are:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/roots4.png"></span>
+ </p>
+<p>
+ To begin with lets solve the problem using Newton-Raphson iterations, we'll
+ begin by defining a function object (functor) that returns the evaluation
+ of the function to solve, along with its first derivative f'(x):
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">cbrt_functor</span>
+<span class="special">{</span>
+ <span class="identifier">cbrt_functor</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">target</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">a</span><span class="special">(</span><span class="identifier">target</span><span class="special">)</span>
+ <span class="special">{</span> <span class="comment">// Constructor stores value to be 'cube-rooted'.</span>
+ <span class="special">}</span>
+ <a class="link" href="tuples.html" title="Tuples">boost::math::tuple</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">z</span><span class="special">)</span>
+ <span class="special">{</span> <span class="comment">// z is estimate so far.</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">make_tuple</span><span class="special">(</span>
+ <span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span> <span class="special">-</span> <span class="identifier">a</span><span class="special">,</span> <span class="comment">// return both f(x)</span>
+ <span class="number">3</span> <span class="special">*</span> <span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">);</span> <span class="comment">// and f'(x)</span>
+ <span class="special">}</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">T</span> <span class="identifier">a</span><span class="special">;</span> <span class="comment">// to be 'cube-rooted'.</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Implementing the cube root is fairly trivial now, the hardest part is finding
+ a good approximation to begin with: in this case we'll just divide the exponent
+ by three:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">cbrt</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span> <span class="comment">// for frexp, ldexp, numeric_limits.</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">;</span>
+
+ <span class="keyword">int</span> <span class="identifier">exp</span><span class="special">;</span>
+ <span class="identifier">frexp</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="special">&</span><span class="identifier">exp</span><span class="special">);</span> <span class="comment">// Get exponent of z (ignore mantissa).</span>
+ <span class="identifier">T</span> <span class="identifier">min</span> <span class="special">=</span> <span class="identifier">ldexp</span><span class="special">(</span><span class="number">0.5</span><span class="special">,</span> <span class="identifier">exp</span><span class="special">/</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">T</span> <span class="identifier">max</span> <span class="special">=</span> <span class="identifier">ldexp</span><span class="special">(</span><span class="number">2.0</span><span class="special">,</span> <span class="identifier">exp</span><span class="special">/</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">T</span> <span class="identifier">guess</span> <span class="special">=</span> <span class="identifier">ldexp</span><span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="identifier">exp</span><span class="special">/</span><span class="number">3</span><span class="special">);</span> <span class="comment">// Rough guess is to divide the exponent by three.</span>
+ <span class="keyword">int</span> <span class="identifier">digits</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span><span class="special">;</span> <span class="comment">// Maximum possible binary digits accuracy for type T.</span>
+ <span class="keyword">return</span> <span class="identifier">newton_raphson_iterate</span><span class="special">(</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">cbrt_functor</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">z</span><span class="special">),</span> <span class="identifier">guess</span><span class="special">,</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">max</span><span class="special">,</span> <span class="identifier">digits</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Using the test data in <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">cbrt_test</span><span class="special">.</span><span class="identifier">cpp</span></code> this
+ found the cube root exact to the last digit in every case, and in no more
+ than 6 iterations at double precision. However, you will note that a high
+ precision was used in this example, exactly what was warned against earlier
+ on in these docs! In this particular case it is possible to compute f(x)
+ exactly and without undue cancellation error, so a high limit is not too
+ much of an issue. However, reducing the limit to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special">*</span> <span class="number">2</span> <span class="special">/</span> <span class="number">3</span></code>
+ gave full precision in all but one of the test cases (and that one was out
+ by just one bit). The maximum number of iterations remained 6, but in most
+ cases was reduced by one.
+ </p>
+<p>
+ Note also that the above code omits a probably optimization by computing
+ z², and reusing it, omits error handling, and does not handle negative values
+ of z correctly. (These are left as an exercise for the reader!)
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cbrt</span></code> function also includes these and other
+ improvements.
+ </p>
+<p>
+ Now let's adapt the functor slightly to return the second derivative as well:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">cbrt_functor</span>
+<span class="special">{</span>
+ <span class="identifier">cbrt_functor</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">target</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">a</span><span class="special">(</span><span class="identifier">target</span><span class="special">){}</span>
+ <a class="link" href="tuples.html" title="Tuples">boost::math::tuple</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">z</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">make_tuple</span><span class="special">(</span>
+ <span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span> <span class="special">-</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="number">3</span> <span class="special">*</span> <span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">,</span>
+ <span class="number">6</span> <span class="special">*</span> <span class="identifier">z</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">T</span> <span class="identifier">a</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ And then adapt the <code class="computeroutput"><span class="identifier">cbrt</span></code> function
+ to use Halley iterations:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">cbrt</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">;</span>
+
+ <span class="keyword">int</span> <span class="identifier">exp</span><span class="special">;</span>
+ <span class="identifier">frexp</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="special">&</span><span class="identifier">exp</span><span class="special">);</span>
+ <span class="identifier">T</span> <span class="identifier">min</span> <span class="special">=</span> <span class="identifier">ldexp</span><span class="special">(</span><span class="number">0.5</span><span class="special">,</span> <span class="identifier">exp</span><span class="special">/</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">T</span> <span class="identifier">max</span> <span class="special">=</span> <span class="identifier">ldexp</span><span class="special">(</span><span class="number">2.0</span><span class="special">,</span> <span class="identifier">exp</span><span class="special">/</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">T</span> <span class="identifier">guess</span> <span class="special">=</span> <span class="identifier">ldexp</span><span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="identifier">exp</span><span class="special">/</span><span class="number">3</span><span class="special">);</span>
+ <span class="keyword">int</span> <span class="identifier">digits</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special">/</span> <span class="number">2</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">halley_iterate</span><span class="special">(</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">cbrt_functor</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">z</span><span class="special">),</span> <span class="identifier">guess</span><span class="special">,</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">max</span><span class="special">,</span> <span class="identifier">digits</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Note that the iterations are set to stop at just one-half of full precision,
+ and yet, even so, not one of the test cases had a single bit wrong. What's
+ more, the maximum number of iterations was now just 4.
+ </p>
+<p>
+ Just to complete the picture, we could have called <code class="computeroutput"><span class="identifier">schroeder_iterate</span></code>
+ in the last example: and in fact it makes no difference to the accuracy or
+ number of iterations in this particular case. However, the relative performance
+ of these two methods may vary depending upon the nature of f(x), and the
+ accuracy to which the initial guess can be computed. There appear to be no
+ generalisations that can be made except "try them and see".
+ </p>
+<p>
+ Finally, had we called <code class="computeroutput"><span class="identifier">cbrt</span></code>
+ with NTL::RR set to
+ 1000 bit precision, then full precision can be obtained with just 7 iterations.
+ To put that in perspective, an increase in precision by a factor of 20, has
+ less than doubled the number of iterations. That just goes to emphasise that
+ most of the iterations are used up getting the first few digits correct:
+ after that these methods can churn out further digits with remarkable efficiency.
+ </p>
+<p>
+ Or to put it another way: <span class="emphasis"><em>nothing beats a really good initial guess!</em></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="rational.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="roots2.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals1/roots2.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals1/roots2.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,576 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Root Finding Without Derivatives: Bisection, Bracket and TOMS748</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals1.html" title="Utilities & internals">
+<link rel="prev" href="roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder">
+<link rel="next" href="minima.html" title="Locating Function Minima: Brent's algorithm">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="roots.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="minima.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals1_roots2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals1.roots2"></a><a class="link" href="roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748">Root Finding Without
+ Derivatives: Bisection, Bracket and TOMS748</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.internals1.roots2.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots2.synopsis"></a></span><a class="link" href="roots2.html#math_toolkit.internals1.roots2.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">roots</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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">namespace</span> <span class="identifier">tools</span><span class="special">{</span>
+<span class="comment">// Bisection</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bisect</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bisect</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bisect</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">,</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+ <span class="comment">// Bracket and Solve Root</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bracket_and_solve_root</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">guess</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">factor</span><span class="special">,</span>
+ <span class="keyword">bool</span> <span class="identifier">rising</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bracket_and_solve_root</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">guess</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">factor</span><span class="special">,</span>
+ <span class="keyword">bool</span> <span class="identifier">rising</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">,</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+ <span class="comment">// TOMS 748 algorithm</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">toms748_solve</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">toms748_solve</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">,</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">toms748_solve</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">fa</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">fb</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">toms748_solve</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">fa</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">fb</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">,</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="comment">// Termination conditions:</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">eps_tolerance</span><span class="special">;</span>
+
+<span class="keyword">struct</span> <span class="identifier">equal_floor</span><span class="special">;</span>
+<span class="keyword">struct</span> <span class="identifier">equal_ceil</span><span class="special">;</span>
+<span class="keyword">struct</span> <span class="identifier">equal_nearest_integer</span><span class="special">;</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.internals1.roots2.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots2.description"></a></span><a class="link" href="roots2.html#math_toolkit.internals1.roots2.description">Description</a>
+ </h5>
+<p>
+ These functions solve the root of some function <span class="emphasis"><em>f(x)</em></span>
+ <span class="emphasis"><em>without the need for any derivatives of <span class="emphasis"><em>f(x)</em></span></em></span>.
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">bracket_and_solve_root</span></code>
+ functions use TOMS Algorithm 748 that is asymptotically the most efficient
+ known, and have been shown to be optimal for a certain classes of smooth
+ functions. Variants with and without __policies are provided.
+ </p>
+<p>
+ Alternatively, there is a simple bisection routine which can be useful in
+ its own right in some situations, or alternatively for narrowing down the
+ range containing the root, prior to calling a more advanced algorithm.
+ </p>
+<p>
+ All the algorithms in this section reduce the diameter of the enclosing interval
+ with the same asymptotic efficiency with which they locate the root. This
+ is in contrast to the derivative based methods which may <span class="emphasis"><em>never</em></span>
+ significantly reduce the enclosing interval, even though they rapidly approach
+ the root. This is also in contrast to some other derivative-free methods
+ (for example the methods of <a href="http://en.wikipedia.org/wiki/Brent%27s_method" target="_top">Brent
+ or Dekker)</a> which only reduce the enclosing interval on the final
+ step. Therefore these methods return a std::pair containing the enclosing
+ interval found, and accept a function object specifying the termination condition.
+ Three function objects are provided for ready-made termination conditions:
+ <span class="emphasis"><em>eps_tolerance</em></span> causes termination when the relative error
+ in the enclosing interval is below a certain threshold, while <span class="emphasis"><em>equal_floor</em></span>
+ and <span class="emphasis"><em>equal_ceil</em></span> are useful for certain statistical applications
+ where the result is known to be an integer. Other user-defined termination
+ conditions are likely to be used only rarely, but may be useful in some specific
+ circumstances.
+ </p>
+<h4>
+<a name="math_toolkit.internals1.roots2.h2"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots2.bisection"></a></span><a class="link" href="roots2.html#math_toolkit.internals1.roots2.bisection">Bisection</a>
+ </h4>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bisect</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bisect</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bisect</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span>
+ <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">,</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ These functions locate the root using bisection: function arguments are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">f</span></dt>
+<dd><p>
+ A unary functor which is the function whose root is to be found.
+ </p></dd>
+<dt><span class="term">min</span></dt>
+<dd><p>
+ The left bracket of the interval known to contain the root.
+ </p></dd>
+<dt><span class="term">max</span></dt>
+<dd><p>
+ The right bracket of the interval known to contain the root. It is
+ a precondition that <span class="emphasis"><em>min < max</em></span> and <span class="emphasis"><em>f(min)*f(max)
+ <= 0</em></span>, the function signals evaluation error if these
+ preconditions are violated. The action taken is controlled by the evaluation
+ error policy. A best guess may be returned, perhaps significantly wrong.
+ </p></dd>
+<dt><span class="term">tol</span></dt>
+<dd><p>
+ A binary functor that specifies the termination condition: the function
+ will return the current brackets enclosing the root when <span class="emphasis"><em>tol(min,max)</em></span>
+ becomes true.
+ </p></dd>
+<dt><span class="term">max_iter</span></dt>
+<dd><p>
+ The maximum number of invocations of <span class="emphasis"><em>f(x)</em></span> to make
+ while searching for the root.
+ </p></dd>
+</dl>
+</div>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ Returns: a pair of values <span class="emphasis"><em>r</em></span> that bracket the root so
+ that:
+ </p>
+<pre class="programlisting"><span class="identifier">f</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">first</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span> <span class="special"><=</span> <span class="number">0</span>
+</pre>
+<p>
+ and either
+ </p>
+<pre class="programlisting"><span class="identifier">tol</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">r</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">true</span>
+</pre>
+<p>
+ or
+ </p>
+<pre class="programlisting"><span class="identifier">max_iter</span> <span class="special">>=</span> <span class="identifier">m</span>
+</pre>
+<p>
+ where <span class="emphasis"><em>m</em></span> is the initial value of <span class="emphasis"><em>max_iter</em></span>
+ passed to the function.
+ </p>
+<p>
+ In other words, it's up to the caller to verify whether termination occurred
+ as a result of exceeding <span class="emphasis"><em>max_iter</em></span> function invocations
+ (easily done by checking the updated value of <span class="emphasis"><em>max_iter</em></span>
+ when the function returns), rather than because the termination condition
+ <span class="emphasis"><em>tol</em></span> was satisfied.
+ </p>
+<h4>
+<a name="math_toolkit.internals1.roots2.h3"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots2.bracket_and_solve"></a></span><a class="link" href="roots2.html#math_toolkit.internals1.roots2.bracket_and_solve">Bracket
+ and solve</a>
+ </h4>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bracket_and_solve_root</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">guess</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">factor</span><span class="special">,</span>
+ <span class="keyword">bool</span> <span class="identifier">rising</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">bracket_and_solve_root</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">guess</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">factor</span><span class="special">,</span>
+ <span class="keyword">bool</span> <span class="identifier">rising</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">,</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ This is a convenience function that calls <span class="emphasis"><em>toms748_solve</em></span>
+ internally to find the root of <span class="emphasis"><em>f(x)</em></span>. It's usable only
+ when <span class="emphasis"><em>f(x)</em></span> is a monotonic function, and the location
+ of the root is known approximately, and in particular it is known whether
+ the root is occurs for positive or negative <span class="emphasis"><em>x</em></span>. The parameters
+ are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">f</span></dt>
+<dd><p>
+ A unary functor that is the function whose root is to be solved. f(x)
+ must be uniformly increasing or decreasing on <span class="emphasis"><em>x</em></span>.
+ </p></dd>
+<dt><span class="term">guess</span></dt>
+<dd><p>
+ An initial approximation to the root
+ </p></dd>
+<dt><span class="term">factor</span></dt>
+<dd><p>
+ A scaling factor that is used to bracket the root: the value <span class="emphasis"><em>guess</em></span>
+ is multiplied (or divided as appropriate) by <span class="emphasis"><em>factor</em></span>
+ until two values are found that bracket the root. A value such as 2
+ is a typical choice for <span class="emphasis"><em>factor</em></span>.
+ </p></dd>
+<dt><span class="term">rising</span></dt>
+<dd><p>
+ Set to <span class="emphasis"><em>true</em></span> if <span class="emphasis"><em>f(x)</em></span> is rising
+ on <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>false</em></span> if <span class="emphasis"><em>f(x)</em></span>
+ is falling on <span class="emphasis"><em>x</em></span>. This value is used along with
+ the result of <span class="emphasis"><em>f(guess)</em></span> to determine if <span class="emphasis"><em>guess</em></span>
+ is above or below the root.
+ </p></dd>
+<dt><span class="term">tol</span></dt>
+<dd><p>
+ A binary functor that determines the termination condition for the
+ search for the root. <span class="emphasis"><em>tol</em></span> is passed the current
+ brackets at each step, when it returns true then the current brackets
+ are returned as the result.
+ </p></dd>
+<dt><span class="term">max_iter</span></dt>
+<dd><p>
+ The maximum number of function invocations to perform in the search
+ for the root.
+ </p></dd>
+</dl>
+</div>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ Returns: a pair of values <span class="emphasis"><em>r</em></span> that bracket the root so
+ that:
+ </p>
+<pre class="programlisting"><span class="identifier">f</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">first</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span> <span class="special"><=</span> <span class="number">0</span>
+</pre>
+<p>
+ and either
+ </p>
+<pre class="programlisting"><span class="identifier">tol</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">r</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">true</span>
+</pre>
+<p>
+ or
+ </p>
+<pre class="programlisting"><span class="identifier">max_iter</span> <span class="special">>=</span> <span class="identifier">m</span>
+</pre>
+<p>
+ where <span class="emphasis"><em>m</em></span> is the initial value of <span class="emphasis"><em>max_iter</em></span>
+ passed to the function.
+ </p>
+<p>
+ In other words, it's up to the caller to verify whether termination occurred
+ as a result of exceeding <span class="emphasis"><em>max_iter</em></span> function invocations
+ (easily done by checking the value of <span class="emphasis"><em>max_iter</em></span> when
+ the function returns), rather than because the termination condition <span class="emphasis"><em>tol</em></span>
+ was satisfied.
+ </p>
+<h4>
+<a name="math_toolkit.internals1.roots2.h4"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots2.algorithm_toms_748_alefeld_potra"></a></span><a class="link" href="roots2.html#math_toolkit.internals1.roots2.algorithm_toms_748_alefeld_potra">Algorithm
+ TOMS 748: Alefeld, Potra and Shi: Enclosing zeros of continuous functions</a>
+ </h4>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">toms748_solve</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">toms748_solve</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">,</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">toms748_solve</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">fa</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">fb</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tol</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">toms748_solve</span><span class="special">(</span>
+ <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">fa</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">fb</span><span class="special">,</span>
+ <span class="identifier">Tol</span> <span class="identifier">tol</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_iter</span><span class="special">,</span>
+ <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ These two functions implement TOMS Algorithm 748: it uses a mixture of cubic,
+ quadratic and linear (secant) interpolation to locate the root of <span class="emphasis"><em>f(x)</em></span>.
+ The two functions differ only by whether values for <span class="emphasis"><em>f(a)</em></span>
+ and <span class="emphasis"><em>f(b)</em></span> are already available. The toms748_solve parameters
+ are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">f</span></dt>
+<dd><p>
+ A unary functor that is the function whose root is to be solved. f(x)
+ need not be uniformly increasing or decreasing on <span class="emphasis"><em>x</em></span>
+ and may have multiple roots.
+ </p></dd>
+<dt><span class="term">a</span></dt>
+<dd><p>
+ The lower bound for the initial bracket of the root.
+ </p></dd>
+<dt><span class="term">b</span></dt>
+<dd><p>
+ The upper bound for the initial bracket of the root. It is a precondition
+ that <span class="emphasis"><em>a < b</em></span> and that <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span> bracket the root to find so that <span class="emphasis"><em>f(a)*f(b)
+ < 0</em></span>.
+ </p></dd>
+<dt><span class="term">fa</span></dt>
+<dd><p>
+ Optional: the value of <span class="emphasis"><em>f(a)</em></span>.
+ </p></dd>
+<dt><span class="term">fb</span></dt>
+<dd><p>
+ Optional: the value of <span class="emphasis"><em>f(b)</em></span>.
+ </p></dd>
+<dt><span class="term">tol</span></dt>
+<dd><p>
+ A binary functor that determines the termination condition for the
+ search for the root. <span class="emphasis"><em>tol</em></span> is passed the current
+ brackets at each step, when it returns true, then the current brackets
+ are returned as the result.
+ </p></dd>
+<dt><span class="term">max_iter</span></dt>
+<dd><p>
+ The maximum number of function invocations to perform in the search
+ for the root. On exit <span class="emphasis"><em>max_iter</em></span> is set to actual
+ number of function invocations used.
+ </p></dd>
+</dl>
+</div>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ toms748_solve returns: a pair of values <span class="emphasis"><em>r</em></span> that bracket
+ the root so that: f(r.first) * f(r.second) <= 0 and either tol(r.first,
+ r.second) == true or max_iter >= m where <span class="emphasis"><em>m</em></span> is the
+ initial value of <span class="emphasis"><em>max_iter</em></span> passed to the function.
+ </p>
+<p>
+ In other words, it's up to the caller to verify whether termination occurred
+ as a result of exceeding <span class="emphasis"><em>max_iter</em></span> function invocations
+ (easily done by checking the updated value of <span class="emphasis"><em>max_iter</em></span>
+ against its previous value passed as parameter), rather than because the
+ termination condition <span class="emphasis"><em>tol</em></span> was satisfied.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">eps_tolerance</span>
+<span class="special">{</span>
+ <span class="identifier">eps_tolerance</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">bits</span><span class="special">);</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="identifier">eps_tolerance</span></code> is the usual
+ termination condition used with these root finding functions. Its operator()
+ will return true when the relative distance between <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span> is less than twice the machine epsilon for T,
+ or 2<sup>1-bits</sup>, whichever is the larger. In other words, you set <span class="emphasis"><em>bits</em></span>
+ to the number of bits of precision you want in the result. The minimal tolerance
+ of twice the machine epsilon of T is required to ensure that we get back
+ a bracketing interval: since this must clearly be at least 1 epsilon in size.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">equal_floor</span>
+<span class="special">{</span>
+ <span class="identifier">equal_floor</span><span class="special">();</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ This termination condition is used when you want to find an integer result
+ that is the <span class="emphasis"><em>floor</em></span> of the true root. It will terminate
+ as soon as both ends of the interval have the same <span class="emphasis"><em>floor</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">equal_ceil</span>
+<span class="special">{</span>
+ <span class="identifier">equal_ceil</span><span class="special">();</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ This termination condition is used when you want to find an integer result
+ that is the <span class="emphasis"><em>ceil</em></span> of the true root. It will terminate
+ as soon as both ends of the interval have the same <span class="emphasis"><em>ceil</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">equal_nearest_integer</span>
+<span class="special">{</span>
+ <span class="identifier">equal_nearest_integer</span><span class="special">();</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">b</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ This termination condition is used when you want to find an integer result
+ that is the <span class="emphasis"><em>closest</em></span> to the true root. It will terminate
+ as soon as both ends of the interval round to the same nearest integer.
+ </p>
+<h5>
+<a name="math_toolkit.internals1.roots2.h5"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.roots2.implementation"></a></span><a class="link" href="roots2.html#math_toolkit.internals1.roots2.implementation">Implementation</a>
+ </h5>
+<p>
+ The implementation of the bisection algorithm is extremely straightforward
+ and not detailed here. <a href="http://portal.acm.org/citation.cfm?id=210111" target="_top">TOMS
+ Algorithm 748: enclosing zeros of continuous functions</a> is described
+ in detail in:
+ </p>
+<p>
+ <span class="emphasis"><em>Algorithm 748: Enclosing Zeros of Continuous Functions, G. E. Alefeld,
+ F. A. Potra and Yixun Shi, ACM Transactions on Mathematica1 Software, Vol.
+ 21. No. 3. September 1995. Pages 327-344.</em></span>
+ </p>
+<p>
+ The implementation here is a faithful translation of this paper into C++.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="roots.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="minima.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals1/series_evaluation.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals1/series_evaluation.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,187 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Series Evaluation</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals1.html" title="Utilities & internals">
+<link rel="prev" href="../internals1.html" title="Utilities & internals">
+<link rel="next" href="cf.html" title="Continued Fraction Evaluation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../internals1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="cf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals1_series_evaluation">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals1.series_evaluation"></a><a class="link" href="series_evaluation.html" title="Series Evaluation">Series Evaluation</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.internals1.series_evaluation.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.series_evaluation.synopsis"></a></span><a class="link" href="series_evaluation.html#math_toolkit.internals1.series_evaluation.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">series</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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">namespace</span> <span class="identifier">tools</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Functor</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">sum_series</span><span class="special">(</span><span class="identifier">Functor</span><span class="special">&</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">tolerance</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_terms</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&</span> <span class="identifier">init_value</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Functor</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">sum_series</span><span class="special">(</span><span class="identifier">Functor</span><span class="special">&</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">tolerance</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_terms</span><span class="special">);</span>
+
+<span class="comment">//</span>
+<span class="comment">// The following interfaces are now deprecated:</span>
+<span class="comment">// </span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Functor</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">sum_series</span><span class="special">(</span><span class="identifier">Functor</span><span class="special">&</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Functor</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">sum_series</span><span class="special">(</span><span class="identifier">Functor</span><span class="special">&</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_terms</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Functor</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">sum_series</span><span class="special">(</span><span class="identifier">Functor</span><span class="special">&</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">init_value</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Functor</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">sum_series</span><span class="special">(</span><span class="identifier">Functor</span><span class="special">&</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_terms</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">init_value</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Functor</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">kahan_sum_series</span><span class="special">(</span><span class="identifier">Functor</span><span class="special">&</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Functor</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">kahan_sum_series</span><span class="special">(</span><span class="identifier">Functor</span><span class="special">&</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&</span> <span class="identifier">max_terms</span><span class="special">);</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.internals1.series_evaluation.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.series_evaluation.description"></a></span><a class="link" href="series_evaluation.html#math_toolkit.internals1.series_evaluation.description">Description</a>
+ </h5>
+<p>
+ These algorithms are intended for the <a href="http://en.wikipedia.org/wiki/Series_%28mathematics%29" target="_top">summation
+ of infinite series</a>.
+ </p>
+<p>
+ Each of the algorithms takes a nullary-function object as the first argument:
+ the function object will be repeatedly invoked to pull successive terms from
+ the series being summed.
+ </p>
+<p>
+ The second argument is the precision required, summation will stop when the
+ next term is less than <span class="emphasis"><em>tolerance</em></span> times the result. The
+ deprecated versions of sum_series take an integer number of bits here - internally
+ they just convert this to a tolerance and forward the call.
+ </p>
+<p>
+ The third argument <span class="emphasis"><em>max_terms</em></span> sets an upper limit on
+ the number of terms of the series to evaluate. In addition, on exit the function
+ will set <span class="emphasis"><em>max_terms</em></span> to the actual number of terms of
+ the series that were evaluated: this is particularly useful for profiling
+ the convergence properties of a new series.
+ </p>
+<p>
+ The final optional argument <span class="emphasis"><em>init_value</em></span> is the initial
+ value of the sum to which the terms of the series should be added. This is
+ useful in two situations:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Where the first value of the series has a different formula to successive
+ terms. In this case the first value in the series can be passed as the
+ last argument and the logic of the function object can then be simplified
+ to return subsequent terms.
+ </li>
+<li class="listitem">
+ Where the series is being added (or subtracted) from some other value:
+ termination of the series will likely occur much more rapidly if that
+ other value is passed as the last argument. For example, there are several
+ functions that can be expressed as <span class="emphasis"><em>1 - S(z)</em></span> where
+ S(z) is an infinite series. In this case, pass -1 as the last argument
+ and then negate the result of the summation to get the result of <span class="emphasis"><em>1
+ - S(z)</em></span>.
+ </li>
+</ul></div>
+<p>
+ The two <span class="emphasis"><em>kahan_sum_series</em></span> variants of these algorithms
+ maintain a carry term that corrects for roundoff error during summation.
+ They are inspired by the <a href="http://en.wikipedia.org/wiki/Kahan_Summation_Algorithm" target="_top"><span class="emphasis"><em>Kahan
+ Summation Formula</em></span></a> that appears in <a href="http://docs.sun.com/source/806-3568/ncg_goldberg.html" target="_top">What
+ Every Computer Scientist Should Know About Floating-Point Arithmetic</a>.
+ However, it should be pointed out that there are very few series that require
+ summation in this way.
+ </p>
+<h5>
+<a name="math_toolkit.internals1.series_evaluation.h2"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.series_evaluation.example"></a></span><a class="link" href="series_evaluation.html#math_toolkit.internals1.series_evaluation.example">Example</a>
+ </h5>
+<p>
+ Let's suppose we want to implement <span class="emphasis"><em>log(1+x)</em></span> via its
+ infinite series,
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/log1pseries.png"></span>
+ </p>
+<p>
+ We begin by writing a small function object to return successive terms of
+ the series:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">log1p_series</span>
+<span class="special">{</span>
+ <span class="comment">// we must define a result_type typedef:</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="identifier">log1p_series</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">k</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="identifier">m_mult</span><span class="special">(-</span><span class="identifier">x</span><span class="special">),</span> <span class="identifier">m_prod</span><span class="special">(-</span><span class="number">1</span><span class="special">){}</span>
+
+ <span class="identifier">T</span> <span class="keyword">operator</span><span class="special">()()</span>
+ <span class="special">{</span>
+ <span class="comment">// This is the function operator invoked by the summation</span>
+ <span class="comment">// algorithm, the first call to this operator should return</span>
+ <span class="comment">// the first term of the series, the second call the second </span>
+ <span class="comment">// term and so on.</span>
+ <span class="identifier">m_prod</span> <span class="special">*=</span> <span class="identifier">m_mult</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">m_prod</span> <span class="special">/</span> <span class="special">++</span><span class="identifier">k</span><span class="special">;</span>
+ <span class="special">}</span>
+
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">int</span> <span class="identifier">k</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">m_mult</span><span class="special">;</span>
+ <span class="identifier">T</span> <span class="identifier">m_prod</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Implementing log(1+x) is now fairly trivial:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">log1p</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// We really should add some error checking on x here!</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">fabs</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special"><</span> <span class="number">1</span><span class="special">);</span>
+
+ <span class="comment">// Construct the series functor:</span>
+ <span class="identifier">log1p_series</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">s</span><span class="special">(</span><span class="identifier">x</span><span class="special">);</span>
+ <span class="comment">// Set a limit on how many iterations we permit:</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span> <span class="identifier">max_iter</span> <span class="special">=</span> <span class="number">1000</span><span class="special">;</span>
+ <span class="comment">// Add it up, with enough precision for full machine precision:</span>
+ <span class="keyword">return</span> <span class="identifier">tools</span><span class="special">::</span><span class="identifier">sum_series</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">(),</span> <span class="identifier">max_iter</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../internals1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="cf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals1/tuples.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals1/tuples.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,74 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tuples</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals1.html" title="Utilities & internals">
+<link rel="prev" href="minima.html" title="Locating Function Minima: Brent's algorithm">
+<link rel="next" href="../internals2.html" title="Testing and Development">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="minima.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../internals2.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals1_tuples">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals1.tuples"></a><a class="link" href="tuples.html" title="Tuples">Tuples</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.internals1.tuples.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.tuples.synopsis"></a></span><a class="link" href="tuples.html#math_toolkit.internals1.tuples.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<h5>
+<a name="math_toolkit.internals1.tuples.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals1.tuples.description"></a></span><a class="link" href="tuples.html#math_toolkit.internals1.tuples.description">Description</a>
+ </h5>
+<p>
+ This header defines the type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tuple</span></code>,
+ the associated free functions <code class="computeroutput"><span class="identifier">ignore</span></code>,
+ <code class="computeroutput"><span class="identifier">tie</span></code>, <code class="computeroutput"><span class="identifier">make_tuple</span></code>,
+ <code class="computeroutput"><span class="identifier">get</span></code>, and associated types
+ <code class="computeroutput"><span class="identifier">tuple_size</span></code> and <code class="computeroutput"><span class="identifier">tuple_element</span></code>.
+ </p>
+<p>
+ These types and functions are aliases for:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ std::tuple etc when available, otherwise:
+ </li>
+<li class="listitem">
+ std::tr1::tuple etc when available, otherwise:
+ </li>
+<li class="listitem">
+ boost::fusion::tuple etc if the compiler supports it, otherwise:
+ </li>
+<li class="listitem">
+ boost::tuple.
+ </li>
+</ul></div>
+<p>
+ So this <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tuple</span></code> is strongly recommended for maximum
+ portability.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="minima.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../internals2.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals2.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals2.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Testing and Development</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../toolkit.html" title="Chapter 11. Internals (Series, Rationals and Continued Fractions, Root Finding, Function Minimization, Testing and Development Tools)">
+<link rel="prev" href="internals1/tuples.html" title="Tuples">
+<link rel="next" href="internals2/polynomials.html" title="Polynomials">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="internals1/tuples.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="internals2/polynomials.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals2">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.internals2"></a><a class="link" href="internals2.html" title="Testing and Development">Testing and Development</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Polynomials</span></dt>
+<dt><span class="section"><a href="internals2/minimax.html">Minimax Approximations
+ and the Remez Algorithm</a></span></dt>
+<dt><span class="section"><a href="internals2/error_test.html">Relative Error and
+ Testing</a></span></dt>
+<dt><span class="section"><a href="internals2/test_data.html">Graphing, Profiling,
+ and Generating Test Data for Special 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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="internals1/tuples.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="internals2/polynomials.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals2/error_test.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals2/error_test.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,215 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Relative Error and Testing</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals2.html" title="Testing and Development">
+<link rel="prev" href="minimax.html" title="Minimax Approximations and the Remez Algorithm">
+<link rel="next" href="test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="minimax.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals2.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="test_data.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals2_error_test">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals2.error_test"></a><a class="link" href="error_test.html" title="Relative Error and Testing">Relative Error and
+ Testing</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.internals2.error_test.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.error_test.synopsis"></a></span><a class="link" href="error_test.html#math_toolkit.internals2.error_test.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">relative_error</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">b</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">F1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">F2</span><span class="special">></span>
+<span class="identifier">test_result</span><span class="special"><</span><span class="identifier">see</span><span class="special">-</span><span class="identifier">below</span><span class="special">></span> <span class="identifier">test</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">test_func</span><span class="special">,</span> <span class="identifier">F2</span> <span class="identifier">expect_func</span><span class="special">);</span>
+</pre>
+<h5>
+<a name="math_toolkit.internals2.error_test.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.error_test.description"></a></span><a class="link" href="error_test.html#math_toolkit.internals2.error_test.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">relative_error</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the relative error between <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>v</em></span>
+ using the usual formula:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/error1.png"></span>
+ </p>
+<p>
+ In addition the value returned is zero if:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Both <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>v</em></span> are infinite.
+ </li>
+<li class="listitem">
+ Both <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>v</em></span> are denormalised
+ numbers or zero.
+ </li>
+</ul></div>
+<p>
+ Otherwise if only one of <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>v</em></span>
+ is zero then the value returned is 1.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">F1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">F2</span><span class="special">></span>
+<span class="identifier">test_result</span><span class="special"><</span><span class="identifier">see</span><span class="special">-</span><span class="identifier">below</span><span class="special">></span> <span class="identifier">test</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">test_func</span><span class="special">,</span> <span class="identifier">F2</span> <span class="identifier">expect_func</span><span class="special">);</span>
+</pre>
+<p>
+ This function is used for testing a function against tabulated test data.
+ </p>
+<p>
+ The return type contains statistical data on the relative errors (max, mean,
+ variance, and the number of test cases etc), as well as the row of test data
+ that caused the largest relative error. Public members of type test_result
+ are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="keyword">unsigned</span> <span class="identifier">worst</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span></code></span></dt>
+<dd><p>
+ Returns the row at which the worst error occurred.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span> <span class="identifier">min</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span></code></span></dt>
+<dd><p>
+ Returns the smallest relative error found.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span> <span class="identifier">max</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span></code></span></dt>
+<dd><p>
+ Returns the largest relative error found.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span> <span class="identifier">mean</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span></code></span></dt>
+<dd><p>
+ Returns the mean error found.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span> <span class="identifier">count</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span></code></span></dt>
+<dd><p>
+ Returns the number of test cases.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span> <span class="identifier">variance</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span></code></span></dt>
+<dd><p>
+ Returns the variance of the errors found.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span> <span class="identifier">variance1</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span></code></span></dt>
+<dd><p>
+ Returns the unbiased variance of the errors found.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span> <span class="identifier">rms</span><span class="special">()</span><span class="keyword">const</span></code></span></dt>
+<dd><p>
+ Returns the Root Mean Square, or quadratic mean of the errors.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">test_result</span><span class="special">&</span>
+ <span class="keyword">operator</span><span class="special">+=(</span><span class="keyword">const</span> <span class="identifier">test_result</span><span class="special">&</span> <span class="identifier">t</span><span class="special">)</span></code></span></dt>
+<dd><p>
+ Combines two test_result's into a single result.
+ </p></dd>
+</dl>
+</div>
+<p>
+ The template parameter of test_result, is the same type as the values in
+ the two dimensional array passed to function <span class="emphasis"><em>test</em></span>, roughly
+ that's <code class="computeroutput"><span class="identifier">A</span><span class="special">::</span><span class="identifier">value_type</span><span class="special">::</span><span class="identifier">value_type</span></code>.
+ </p>
+<p>
+ Parameter <span class="emphasis"><em>a</em></span> is a matrix of test data: and must be a
+ standard library Sequence type, that contains another Sequence type: typically
+ it will be a two dimensional instance of <code class="literal">boost::array</code>.
+ Each row of <span class="emphasis"><em>a</em></span> should contain all the parameters that
+ are passed to the function under test as well as the expected result.
+ </p>
+<p>
+ Parameter <span class="emphasis"><em>test_func</em></span> is the function under test, it is
+ invoked with each row of test data in <span class="emphasis"><em>a</em></span>. Typically type
+ F1 is created with Boost.Lambda: see the example below.
+ </p>
+<p>
+ Parameter <span class="emphasis"><em>expect_func</em></span> is a functor that extracts the
+ expected result from a row of test data in <span class="emphasis"><em>a</em></span>. Typically
+ type F2 is created with Boost.Lambda: see the example below.
+ </p>
+<p>
+ If the function under test returns a non-finite value when a finite result
+ is expected, or if a gross error is found, then a message is sent to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span></code>,
+ and a call to BOOST_ERROR() made (which means that including this header
+ requires you use Boost.Test). This is mainly a debugging/development aid
+ (and a good place for a breakpoint).
+ </p>
+<h5>
+<a name="math_toolkit.internals2.error_test.h2"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.error_test.example"></a></span><a class="link" href="error_test.html#math_toolkit.internals2.error_test.example">Example</a>
+ </h5>
+<p>
+ Suppose we want to test the tgamma and lgamma functions, we can create a
+ two dimensional matrix of test data, each row is one test case, and contains
+ three elements: the input value, and the expected results for the tgamma
+ and lgamma functions respectively.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">TestType</span><span class="special">,</span> <span class="number">3</span><span class="special">>,</span> <span class="identifier">NumberOfTests</span><span class="special">></span>
+ <span class="identifier">factorials</span> <span class="special">=</span> <span class="special">{</span>
+ <span class="comment">/* big array of test data goes here */</span>
+ <span class="special">};</span>
+</pre>
+<p>
+ Now we can invoke the test function to test tgamma:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lambda</span><span class="special">;</span>
+
+<span class="comment">// get a pointer to the function under test:</span>
+<span class="identifier">TestType</span> <span class="special">(*</span><span class="identifier">funcp</span><span class="special">)(</span><span class="identifier">TestType</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">;</span>
+
+<span class="comment">// declare something to hold the result:</span>
+<span class="identifier">test_result</span><span class="special"><</span><span class="identifier">TestType</span><span class="special">></span> <span class="identifier">result</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// and test tgamma against data:</span>
+<span class="comment">//</span>
+<span class="identifier">result</span> <span class="special">=</span> <span class="identifier">test</span><span class="special">(</span>
+ <span class="identifier">factorials</span><span class="special">,</span>
+ <span class="identifier">bind</span><span class="special">(</span><span class="identifier">funcp</span><span class="special">,</span> <span class="identifier">ret</span><span class="special"><</span><span class="identifier">TestType</span><span class="special">>(</span><span class="identifier">_1</span><span class="special">[</span><span class="number">0</span><span class="special">])),</span> <span class="comment">// calls tgamma with factorials[row][0]</span>
+ <span class="identifier">ret</span><span class="special"><</span><span class="identifier">TestType</span><span class="special">>(</span><span class="identifier">_1</span><span class="special">[</span><span class="number">1</span><span class="special">])</span> <span class="comment">// extracts the expected result from factorials[row][1]</span>
+<span class="special">);</span>
+<span class="comment">//</span>
+<span class="comment">// Print out some results:</span>
+<span class="comment">//</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"The Mean was "</span> <span class="special"><<</span> <span class="identifier">result</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"The worst error was "</span> <span class="special"><<</span> <span class="special">(</span><span class="identifier">result</span><span class="special">.</span><span class="identifier">max</span><span class="special">)()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"The worst error was at row "</span> <span class="special"><<</span> <span class="identifier">result</span><span class="special">.</span><span class="identifier">worst_case</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// same again with lgamma this time:</span>
+<span class="comment">//</span>
+<span class="identifier">funcp</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lgamma</span><span class="special">;</span>
+<span class="identifier">result</span> <span class="special">=</span> <span class="identifier">test</span><span class="special">(</span>
+ <span class="identifier">factorials</span><span class="special">,</span>
+ <span class="identifier">bind</span><span class="special">(</span><span class="identifier">funcp</span><span class="special">,</span> <span class="identifier">ret</span><span class="special"><</span><span class="identifier">TestType</span><span class="special">>(</span><span class="identifier">_1</span><span class="special">[</span><span class="number">0</span><span class="special">])),</span> <span class="comment">// calls tgamma with factorials[row][0]</span>
+ <span class="identifier">ret</span><span class="special"><</span><span class="identifier">TestType</span><span class="special">>(</span><span class="identifier">_1</span><span class="special">[</span><span class="number">2</span><span class="special">])</span> <span class="comment">// extracts the expected result from factorials[row][2]</span>
+<span class="special">);</span>
+<span class="comment">//</span>
+<span class="comment">// etc ...</span>
+<span class="comment">//</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="minimax.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals2.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="test_data.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals2/minimax.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals2/minimax.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,273 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Minimax Approximations and the Remez Algorithm</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals2.html" title="Testing and Development">
+<link rel="prev" href="polynomials.html" title="Polynomials">
+<link rel="next" href="error_test.html" title="Relative Error and Testing">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="polynomials.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals2.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="error_test.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals2_minimax">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals2.minimax"></a><a class="link" href="minimax.html" title="Minimax Approximations and the Remez Algorithm">Minimax Approximations
+ and the Remez Algorithm</a>
+</h3></div></div></div>
+<p>
+ The directory libs/math/minimax contains a command line driven program for
+ the generation of minimax approximations using the Remez algorithm. Both
+ polynomial and rational approximations are supported, although the latter
+ are tricky to converge: it is not uncommon for convergence of rational forms
+ to fail. No such limitations are present for polynomial approximations which
+ should always converge smoothly.
+ </p>
+<p>
+ It's worth stressing that developing rational approximations to functions
+ is often not an easy task, and one to which many books have been devoted.
+ To use this tool, you will need to have a reasonable grasp of what the Remez
+ algorithm is, and the general form of the approximation you want to achieve.
+ </p>
+<p>
+ Unless you already familar with the Remez method, you should first read the
+ <a class="link" href="../remez.html" title="The Remez Method">brief background article explaining the
+ principles behind the Remez algorithm</a>.
+ </p>
+<p>
+ The program consists of two parts:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">main.cpp</span></dt>
+<dd><p>
+ Contains the command line parser, and all the calls to the Remez code.
+ </p></dd>
+<dt><span class="term">f.cpp</span></dt>
+<dd><p>
+ Contains the function to approximate.
+ </p></dd>
+</dl>
+</div>
+<p>
+ Therefore to use this tool, you must modify f.cpp to return the function
+ to approximate. The tools supports multiple function approximations within
+ the same compiled program: each as a separate variant:
+ </p>
+<pre class="programlisting"><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">variant</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the value of the function <span class="emphasis"><em>variant</em></span> at point
+ <span class="emphasis"><em>x</em></span>. So if you wish you can just add the function to approximate
+ as a new variant after the existing examples.
+ </p>
+<p>
+ In addition to those two files, the program needs to be linked to a <a class="link" href="../high_precision/use_ntl.html" title="Using NTL Library">patched NTL library to compile</a>.
+ </p>
+<p>
+ Note that the function <span class="emphasis"><em>f</em></span> must return the rational part
+ of the approximation: for example if you are approximating a function <span class="emphasis"><em>f(x)</em></span>
+ then it is quite common to use:
+ </p>
+<pre class="programlisting"><span class="identifier">f</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">g</span><span class="special">(</span><span class="identifier">x</span><span class="special">)(</span><span class="identifier">Y</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">x</span><span class="special">))</span>
+</pre>
+<p>
+ where <span class="emphasis"><em>g(x)</em></span> is the dominant part of <span class="emphasis"><em>f(x)</em></span>,
+ <span class="emphasis"><em>Y</em></span> is some constant, and <span class="emphasis"><em>R(x)</em></span> is
+ the rational approximation part, usually optimised for a low absolute error
+ compared to |Y|.
+ </p>
+<p>
+ In this case you would define <span class="emphasis"><em>f</em></span> to return <span class="emphasis"><em>f(x)/g(x)</em></span>
+ and then set the y-offset of the approximation to <span class="emphasis"><em>Y</em></span>
+ (see command line options below).
+ </p>
+<p>
+ Many other forms are possible, but in all cases the objective is to split
+ <span class="emphasis"><em>f(x)</em></span> into a dominant part that you can evaluate easily
+ using standard math functions, and a smooth and slowly changing rational
+ approximation part. Refer to your favourite textbook for more examples.
+ </p>
+<p>
+ Command line options for the program are as follows:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">variant N</span></dt>
+<dd><p>
+ Sets the current function variant to N. This allows multiple functions
+ that are to be approximated to be compiled into the same executable.
+ Defaults to 0.
+ </p></dd>
+<dt><span class="term">range a b</span></dt>
+<dd><p>
+ Sets the domain for the approximation to the range [a,b], defaults
+ to [0,1].
+ </p></dd>
+<dt><span class="term">relative</span></dt>
+<dd><p>
+ Sets the Remez code to optimise for relative error. This is the default
+ at program startup. Note that relative error can only be used if f(x)
+ has no roots over the range being optimised.
+ </p></dd>
+<dt><span class="term">absolute</span></dt>
+<dd><p>
+ Sets the Remez code to optimise for absolute error.
+ </p></dd>
+<dt><span class="term">pin [true|false]</span></dt>
+<dd><p>
+ "Pins" the code so that the rational approximation passes
+ through the origin. Obviously only set this to <span class="emphasis"><em>true</em></span>
+ if R(0) must be zero. This is typically used when trying to preserve
+ a root at [0,0] while also optimising for relative error.
+ </p></dd>
+<dt><span class="term">order N D</span></dt>
+<dd><p>
+ Sets the order of the approximation to <span class="emphasis"><em>N</em></span> in the
+ numerator and <span class="emphasis"><em>D</em></span> in the denominator. If <span class="emphasis"><em>D</em></span>
+ is zero then the result will be a polynomial approximation. There will
+ be N+D+2 coefficients in total, the first coefficient of the numerator
+ is zero if <span class="emphasis"><em>pin</em></span> was set to true, and the first
+ coefficient of the denominator is always one.
+ </p></dd>
+<dt><span class="term">working-precision N</span></dt>
+<dd><p>
+ Sets the working precision of NTL::RR to <span class="emphasis"><em>N</em></span> binary
+ digits. Defaults to 250.
+ </p></dd>
+<dt><span class="term">target-precision N</span></dt>
+<dd><p>
+ Sets the precision of printed output to <span class="emphasis"><em>N</em></span> binary
+ digits: set to the same number of digits as the type that will be used
+ to evaluate the approximation. Defaults to 53 (for double precision).
+ </p></dd>
+<dt><span class="term">skew val</span></dt>
+<dd><p>
+ "Skews" the initial interpolated control points towards one
+ end or the other of the range. Positive values skew the initial control
+ points towards the left hand side of the range, and negative values
+ towards the right hand side. If an approximation won't converge (a
+ common situation) try adjusting the skew parameter until the first
+ step yields the smallest possible error. <span class="emphasis"><em>val</em></span> should
+ be in the range [-100,+100], the default is zero.
+ </p></dd>
+<dt><span class="term">brake val</span></dt>
+<dd><p>
+ Sets a brake on each step so that the change in the control points
+ is braked by <span class="emphasis"><em>val%</em></span>. Defaults to 50, try a higher
+ value if an approximation won't converge, or a lower value to get speedier
+ convergence.
+ </p></dd>
+<dt><span class="term">x-offset val</span></dt>
+<dd><p>
+ Sets the x-offset to <span class="emphasis"><em>val</em></span>: the approximation will
+ be generated for <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">S</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">x</span> <span class="special">+</span> <span class="identifier">X</span><span class="special">))</span> <span class="special">+</span> <span class="identifier">Y</span></code>
+ where <span class="emphasis"><em>X</em></span> is the x-offset, <span class="emphasis"><em>S</em></span>
+ is the x-scale and <span class="emphasis"><em>Y</em></span> is the y-offset. Defaults
+ to zero. To avoid rounding errors, take care to specify a value that
+ can be exactly represented as a floating point number.
+ </p></dd>
+<dt><span class="term">x-scale val</span></dt>
+<dd><p>
+ Sets the x-scale to <span class="emphasis"><em>val</em></span>: the approximation will
+ be generated for <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">S</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">x</span> <span class="special">+</span> <span class="identifier">X</span><span class="special">))</span> <span class="special">+</span> <span class="identifier">Y</span></code>
+ where <span class="emphasis"><em>S</em></span> is the x-scale, <span class="emphasis"><em>X</em></span>
+ is the x-offset and <span class="emphasis"><em>Y</em></span> is the y-offset. Defaults
+ to one. To avoid rounding errors, take care to specify a value that
+ can be exactly represented as a floating point number.
+ </p></dd>
+<dt><span class="term">y-offset val</span></dt>
+<dd><p>
+ Sets the y-offset to <span class="emphasis"><em>val</em></span>: the approximation will
+ be generated for <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">S</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">x</span> <span class="special">+</span> <span class="identifier">X</span><span class="special">))</span> <span class="special">+</span> <span class="identifier">Y</span></code>
+ where <span class="emphasis"><em>X</em></span> is the x-offset, <span class="emphasis"><em>S</em></span>
+ is the x-scale and <span class="emphasis"><em>Y</em></span> is the y-offset. Defaults
+ to zero. To avoid rounding errors, take care to specify a value that
+ can be exactly represented as a floating point number.
+ </p></dd>
+<dt><span class="term">y-offset auto</span></dt>
+<dd><p>
+ Sets the y-offset to the average value of f(x) evaluated at the two
+ endpoints of the range plus the midpoint of the range. The calculated
+ value is deliberately truncated to <span class="emphasis"><em>float</em></span> precision
+ (and should be stored as a <span class="emphasis"><em>float</em></span> in your code).
+ The approximation will be generated for <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">x</span> <span class="special">+</span> <span class="identifier">X</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">Y</span></code> where <span class="emphasis"><em>X</em></span> is
+ the x-offset and <span class="emphasis"><em>Y</em></span> is the y-offset. Defaults to
+ zero.
+ </p></dd>
+<dt><span class="term">graph N</span></dt>
+<dd><p>
+ Prints N evaluations of f(x) at evenly spaced points over the range
+ being optimised. If unspecified then <span class="emphasis"><em>N</em></span> defaults
+ to 3. Use to check that f(x) is indeed smooth over the range of interest.
+ </p></dd>
+<dt><span class="term">step N</span></dt>
+<dd><p>
+ Performs <span class="emphasis"><em>N</em></span> steps, or one step if <span class="emphasis"><em>N</em></span>
+ is unspecified. After each step prints: the peek error at the extrema
+ of the error function of the approximation, the theoretical error term
+ solved for on the last step, and the maximum relative change in the
+ location of the Chebyshev control points. The approximation is converged
+ on the minimax solution when the two error terms are (approximately)
+ equal, and the change in the control points has decreased to a suitably
+ small value.
+ </p></dd>
+<dt><span class="term">test [float|double|long]</span></dt>
+<dd><p>
+ Tests the current approximation at float, double, or long double precision.
+ Useful to check for rounding errors in evaluating the approximation
+ at fixed precision. Tests are conducted at the extrema of the error
+ function of the approximation, and at the zeros of the error function.
+ </p></dd>
+<dt><span class="term">test [float|double|long] N</span></dt>
+<dd><p>
+ Tests the current approximation at float, double, or long double precision.
+ Useful to check for rounding errors in evaluating the approximation
+ at fixed precision. Tests are conducted at N evenly spaced points over
+ the range of the approximation. If none of [float|double|long] are
+ specified then tests using NTL::RR, this can be used to obtain the
+ error function of the approximation.
+ </p></dd>
+<dt><span class="term">rescale a b</span></dt>
+<dd><p>
+ Takes the current Chebeshev control points, and rescales them over
+ a new interval [a,b]. Sometimes this can be used to obtain starting
+ control points for an approximation that can not otherwise be converged.
+ </p></dd>
+<dt><span class="term">rotate</span></dt>
+<dd><p>
+ Moves one term from the numerator to the denominator, but keeps the
+ Chebyshev control points the same. Sometimes this can be used to obtain
+ starting control points for an approximation that can not otherwise
+ be converged.
+ </p></dd>
+<dt><span class="term">info</span></dt>
+<dd><p>
+ Prints out the current approximation: the location of the zeros of
+ the error function, the location of the Chebyshev control points, the
+ x and y offsets, and of course the coefficients of the polynomials.
+ </p></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="polynomials.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals2.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="error_test.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals2/polynomials.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals2/polynomials.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,124 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Polynomials</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals2.html" title="Testing and Development">
+<link rel="prev" href="../internals2.html" title="Testing and Development">
+<link rel="next" href="minimax.html" title="Minimax Approximations and the Remez Algorithm">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../internals2.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals2.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="minimax.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals2_polynomials">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals2.polynomials"></a><a class="link" href="polynomials.html" title="Polynomials">Polynomials</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.internals2.polynomials.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.polynomials.synopsis"></a></span><a class="link" href="polynomials.html#math_toolkit.internals2.polynomials.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">polynomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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">namespace</span> <span class="identifier">tools</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">polynomial</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// typedefs:</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">value_type</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+
+ <span class="comment">// construct:</span>
+ <span class="identifier">polynomial</span><span class="special">(){}</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <span class="identifier">polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special">*</span> <span class="identifier">data</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">order</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <span class="identifier">polynomial</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">point</span><span class="special">);</span>
+
+ <span class="comment">// access:</span>
+ <span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">size_type</span> <span class="identifier">degree</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">value_type</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">size_type</span> <span class="identifier">i</span><span class="special">);</span>
+ <span class="keyword">const</span> <span class="identifier">value_type</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">size_type</span> <span class="identifier">i</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// operators:</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <span class="identifier">polynomial</span><span class="special">&</span> <span class="keyword">operator</span> <span class="special">+=(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">value</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <span class="identifier">polynomial</span><span class="special">&</span> <span class="keyword">operator</span> <span class="special">-=(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">value</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <span class="identifier">polynomial</span><span class="special">&</span> <span class="keyword">operator</span> <span class="special">*=(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">value</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <span class="identifier">polynomial</span><span class="special">&</span> <span class="keyword">operator</span> <span class="special">+=(</span><span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">U</span><span class="special">>&</span> <span class="identifier">value</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <span class="identifier">polynomial</span><span class="special">&</span> <span class="keyword">operator</span> <span class="special">-=(</span><span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">U</span><span class="special">>&</span> <span class="identifier">value</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <span class="identifier">polynomial</span><span class="special">&</span> <span class="keyword">operator</span> <span class="special">*=(</span><span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">U</span><span class="special">>&</span> <span class="identifier">value</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">b</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">b</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">b</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">b</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">b</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">b</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">b</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">b</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">b</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special"><<</span>
+ <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">polynomial</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">poly</span><span class="special">);</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.internals2.polynomials.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.polynomials.description"></a></span><a class="link" href="polynomials.html#math_toolkit.internals2.polynomials.description">Description</a>
+ </h5>
+<p>
+ This is a fairly trivial class for polynomial manipulation.
+ </p>
+<p>
+ Implementation is currently of the "naive" variety, with O(N^2)
+ multiplication for example. This class should not be used in high-performance
+ computing environments: it is intended for the simple manipulation of small
+ polynomials, typically generated for special function approximation.
+ </p>
+<p>
+ Advanced manipulations: the FFT, division, GCD, factorisation etc are not
+ currently provided. Submissions for these are of course welcome :-)
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../internals2.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals2.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="minimax.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals2/test_data.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals2/test_data.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,540 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Graphing, Profiling, and Generating Test Data for Special Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../internals2.html" title="Testing and Development">
+<link rel="prev" href="error_test.html" title="Relative Error and Testing">
+<link rel="next" href="../../using_udt.html" title="Chapter 12. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="error_test.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals2.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../using_udt.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals2_test_data">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.internals2.test_data"></a><a class="link" href="test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions">Graphing, Profiling,
+ and Generating Test Data for Special Functions</a>
+</h3></div></div></div>
+<p>
+ The class <code class="computeroutput"><span class="identifier">test_data</span></code> and associated
+ helper functions are designed so that in just a few lines of code you should
+ be able to:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Profile a continued fraction, or infinite series for convergence and
+ accuracy.
+ </li>
+<li class="listitem">
+ Generate csv data from a special function that can be imported into your
+ favorite graphing program (or spreadsheet) for further analysis.
+ </li>
+<li class="listitem">
+ Generate high precision test data.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.internals2.test_data.h0"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.test_data.synopsis"></a></span><a class="link" href="test_data.html#math_toolkit.internals2.test_data.synopsis">Synopsis</a>
+ </h5>
+<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">namespace</span> <span class="identifier">tools</span><span class="special">{</span>
+
+<span class="keyword">enum</span> <span class="identifier">parameter_type</span>
+<span class="special">{</span>
+ <span class="identifier">random_in_range</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span>
+ <span class="identifier">periodic_in_range</span> <span class="special">=</span> <span class="number">1</span><span class="special">,</span>
+ <span class="identifier">power_series</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span>
+ <span class="identifier">dummy_param</span> <span class="special">=</span> <span class="number">0x80</span><span class="special">,</span>
+<span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">parameter_info</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_random_param</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">start_range</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">end_range</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n_points</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_periodic_param</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">start_range</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">end_range</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n_points</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_power_param</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">basis</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">start_exponent</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">end_exponent</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">get_user_parameter_info</span><span class="special">(</span><span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">info</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">param_name</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">test_data</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">row_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">row_type</span> <span class="identifier">value_type</span><span class="special">;</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">row_type</span><span class="special">></span> <span class="identifier">container_type</span><span class="special">;</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">container_type</span><span class="special">::</span><span class="identifier">reference</span> <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">container_type</span><span class="special">::</span><span class="identifier">const_reference</span> <span class="identifier">const_reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">container_type</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">container_type</span><span class="special">::</span><span class="identifier">const_iterator</span> <span class="identifier">const_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">container_type</span><span class="special">::</span><span class="identifier">difference_type</span> <span class="identifier">difference_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">container_type</span><span class="special">::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+
+ <span class="comment">// creation:</span>
+ <span class="identifier">test_data</span><span class="special">(){}</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">test_data</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">arg1</span><span class="special">);</span>
+
+ <span class="comment">// insertion:</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">arg1</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">arg1</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">arg2</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">func</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">arg1</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">arg2</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">arg3</span><span class="special">);</span>
+
+ <span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
+
+ <span class="comment">// access:</span>
+ <span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
+ <span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
+ <span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">d</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">d</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">other</span><span class="special">);</span>
+ <span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">size_type</span> <span class="identifier">max_size</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special"><</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">dat</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special"><=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">dat</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">></span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">dat</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">>=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">test_data</span><span class="special">&</span> <span class="identifier">dat</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">write_csv</span><span class="special">(</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">os</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">test_data</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">data</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">write_csv</span><span class="special">(</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">os</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">test_data</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">data</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">charT</span><span class="special">*</span> <span class="identifier">separator</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">write_code</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">test_data</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">data</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">name</span><span class="special">);</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.internals2.test_data.h1"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.test_data.description"></a></span><a class="link" href="test_data.html#math_toolkit.internals2.test_data.description">Description</a>
+ </h5>
+<p>
+ This tool is best illustrated with the following series of examples.
+ </p>
+<p>
+ The functionality of test_data is split into the following parts:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ A functor that implements the function for which data is being generated:
+ this is the bit you have to write.
+ </li>
+<li class="listitem">
+ One of more parameters that are to be passed to the functor, these are
+ described in fairly abstract terms: give me N points distributed like
+ <span class="emphasis"><em>this</em></span> etc.
+ </li>
+<li class="listitem">
+ The class test_data, that takes the functor and descriptions of the parameters
+ and computes how ever many output points have been requested, these are
+ stored in a sorted container.
+ </li>
+<li class="listitem">
+ Routines to iterate over the test_data container and output the data
+ in either csv format, or as C++ source code (as a table using Boost.Array).
+ </li>
+</ul></div>
+<h6>
+<a name="math_toolkit.internals2.test_data.h2"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.test_data.example_1_output_data_for_graph_"></a></span><a class="link" href="test_data.html#math_toolkit.internals2.test_data.example_1_output_data_for_graph_">Example
+ 1: Output Data for Graph Plotting</a>
+ </h6>
+<p>
+ For example, lets say we want to graph the lgamma function between -3 and
+ 100, one could do this like so:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">test_data</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">;</span>
+
+ <span class="comment">// create an object to hold the data:</span>
+ <span class="identifier">test_data</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">data</span><span class="special">;</span>
+
+ <span class="comment">// insert 500 points at uniform intervals between just after -3 and 100:</span>
+ <span class="keyword">double</span> <span class="special">(*</span><span class="identifier">pf</span><span class="special">)(</span><span class="keyword">double</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lgamma</span><span class="special">;</span>
+ <span class="identifier">data</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">pf</span><span class="special">,</span> <span class="identifier">make_periodic_param</span><span class="special">(-</span><span class="number">3.0</span> <span class="special">+</span> <span class="number">0.00001</span><span class="special">,</span> <span class="number">100.0</span><span class="special">,</span> <span class="number">500</span><span class="special">));</span>
+
+ <span class="comment">// print out in csv format:</span>
+ <span class="identifier">write_csv</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">,</span> <span class="identifier">data</span><span class="special">,</span> <span class="string">", "</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Which, when plotted, results in:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/lgamma.png" align="middle"></span>
+ </p>
+<h6>
+<a name="math_toolkit.internals2.test_data.h3"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.test_data.example_2_creating_test_data"></a></span><a class="link" href="test_data.html#math_toolkit.internals2.test_data.example_2_creating_test_data">Example
+ 2: Creating Test Data</a>
+ </h6>
+<p>
+ As a second example, let's suppose we want to create highly accurate test
+ data for a special function. Since many special functions have two or more
+ independent parameters, it's very hard to effectively cover all of the possible
+ parameter space without generating gigabytes of data at great computational
+ expense. A second best approach is to provide the tools by which a user (or
+ the library maintainer) can quickly generate more data on demand to probe
+ the function over a particular domain of interest.
+ </p>
+<p>
+ In this example we'll generate test data for the beta function using NTL::RR at 1000 bit precision.
+ Rather than call our generic version of the beta function, we'll implement
+ a deliberately naive version of the beta function using lgamma, and rely
+ on the high precision of the data type used to get results accurate to at
+ least 128-bit precision. In this way our test data is independent of whatever
+ clever tricks we may wish to use inside the our beta function.
+ </p>
+<p>
+ To start with then, here's the function object that creates the test data:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">ntl</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">test_data</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">fstream</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">test_data</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">;</span>
+
+<span class="keyword">struct</span> <span class="identifier">beta_data_generator</span>
+<span class="special">{</span>
+ <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span> <span class="identifier">b</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">//</span>
+ <span class="comment">// If we throw a domain error then test_data will</span>
+ <span class="comment">// ignore this input point. We'll use this to filter</span>
+ <span class="comment">// out all cases where a < b since the beta function</span>
+ <span class="comment">// is symmetrical in a and b:</span>
+ <span class="comment">//</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">a</span> <span class="special"><</span> <span class="identifier">b</span><span class="special">)</span>
+ <span class="keyword">throw</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">(</span><span class="string">""</span><span class="special">);</span>
+
+ <span class="comment">// very naively calculate spots with lgamma:</span>
+ <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span> <span class="identifier">g1</span><span class="special">,</span> <span class="identifier">g2</span><span class="special">,</span> <span class="identifier">g3</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">s1</span><span class="special">,</span> <span class="identifier">s2</span><span class="special">,</span> <span class="identifier">s3</span><span class="special">;</span>
+ <span class="identifier">g1</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="special">&</span><span class="identifier">s1</span><span class="special">);</span>
+ <span class="identifier">g2</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="special">&</span><span class="identifier">s2</span><span class="special">);</span>
+ <span class="identifier">g3</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">,</span> <span class="special">&</span><span class="identifier">s3</span><span class="special">);</span>
+ <span class="identifier">g1</span> <span class="special">+=</span> <span class="identifier">g2</span> <span class="special">-</span> <span class="identifier">g3</span><span class="special">;</span>
+ <span class="identifier">g1</span> <span class="special">=</span> <span class="identifier">exp</span><span class="special">(</span><span class="identifier">g1</span><span class="special">);</span>
+ <span class="identifier">g1</span> <span class="special">*=</span> <span class="identifier">s1</span> <span class="special">*</span> <span class="identifier">s2</span> <span class="special">*</span> <span class="identifier">s3</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">g1</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ To create the data, we'll need to input the domains for a and b for which
+ the function will be tested: the function <code class="computeroutput"><span class="identifier">get_user_parameter_info</span></code>
+ is designed for just that purpose. The start of main will look something
+ like:
+ </p>
+<pre class="programlisting"><span class="comment">// Set the precision on RR:</span>
+<span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">::</span><span class="identifier">SetPrecision</span><span class="special">(</span><span class="number">1000</span><span class="special">);</span> <span class="comment">// bits.</span>
+<span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">::</span><span class="identifier">SetOutputPrecision</span><span class="special">(</span><span class="number">40</span><span class="special">);</span> <span class="comment">// decimal digits.</span>
+
+<span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">></span> <span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">;</span>
+<span class="identifier">test_data</span><span class="special"><</span><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">></span> <span class="identifier">data</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Welcome.\n"</span>
+ <span class="string">"This program will generate spot tests for the beta function:\n"</span>
+ <span class="string">" beta(a, b)\n\n"</span><span class="special">;</span>
+
+<span class="keyword">bool</span> <span class="identifier">cont</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">line</span><span class="special">;</span>
+
+<span class="keyword">do</span><span class="special">{</span>
+ <span class="comment">// prompt the user for the domain of a and b to test:</span>
+ <span class="identifier">get_user_parameter_info</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="string">"a"</span><span class="special">);</span>
+ <span class="identifier">get_user_parameter_info</span><span class="special">(</span><span class="identifier">arg2</span><span class="special">,</span> <span class="string">"b"</span><span class="special">);</span>
+
+ <span class="comment">// create the data:</span>
+ <span class="identifier">data</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">beta_data_generator</span><span class="special">(),</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">);</span>
+
+ <span class="comment">// see if the user want's any more domains tested:</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Any more data [y/n]?"</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">getline</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cin</span><span class="special">,</span> <span class="identifier">line</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">algorithm</span><span class="special">::</span><span class="identifier">trim</span><span class="special">(</span><span class="identifier">line</span><span class="special">);</span>
+ <span class="identifier">cont</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">line</span> <span class="special">==</span> <span class="string">"y"</span><span class="special">);</span>
+<span class="special">}</span><span class="keyword">while</span><span class="special">(</span><span class="identifier">cont</span><span class="special">);</span>
+</pre>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ At this point one potential stumbling block should be mentioned: test_data<>::insert
+ will create a matrix of test data when there are two or more parameters,
+ so if we have two parameters and we're asked for a thousand points on each,
+ that's a <span class="emphasis"><em>million test points in total</em></span>. Don't say you
+ weren't warned!
+ </p></td></tr>
+</table></div>
+<p>
+ There's just one final step now, and that's to write the test data to file:
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Enter name of test data file [default=beta_data.ipp]"</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">getline</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cin</span><span class="special">,</span> <span class="identifier">line</span><span class="special">);</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">algorithm</span><span class="special">::</span><span class="identifier">trim</span><span class="special">(</span><span class="identifier">line</span><span class="special">);</span>
+<span class="keyword">if</span><span class="special">(</span><span class="identifier">line</span> <span class="special">==</span> <span class="string">""</span><span class="special">)</span>
+ <span class="identifier">line</span> <span class="special">=</span> <span class="string">"beta_data.ipp"</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">ofstream</span> <span class="identifier">ofs</span><span class="special">(</span><span class="identifier">line</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">());</span>
+<span class="identifier">write_code</span><span class="special">(</span><span class="identifier">ofs</span><span class="special">,</span> <span class="identifier">data</span><span class="special">,</span> <span class="string">"beta_data"</span><span class="special">);</span>
+</pre>
+<p>
+ The format of the test data looks something like:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">SC_</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">BOOST_JOIN</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">L</span><span class="special">))</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="number">3</span><span class="special">>,</span> <span class="number">1830</span><span class="special">></span>
+ <span class="identifier">beta_med_data</span> <span class="special">=</span> <span class="special">{</span>
+ <span class="identifier">SC_</span><span class="special">(</span><span class="number">0.4883005917072296142578125</span><span class="special">),</span>
+ <span class="identifier">SC_</span><span class="special">(</span><span class="number">0.4883005917072296142578125</span><span class="special">),</span>
+ <span class="identifier">SC_</span><span class="special">(</span><span class="number">3.245912809500479157065104747353807392371</span><span class="special">),</span>
+ <span class="identifier">SC_</span><span class="special">(</span><span class="number">3.5808107852935791015625</span><span class="special">),</span>
+ <span class="identifier">SC_</span><span class="special">(</span><span class="number">0.4883005917072296142578125</span><span class="special">),</span>
+ <span class="identifier">SC_</span><span class="special">(</span><span class="number">1.007653173802923954909901438393379243537</span><span class="special">),</span>
+ <span class="comment">/* ... lots of rows skipped */</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The first two values in each row are the input parameters that were passed
+ to our functor and the last value is the return value from the functor. Had
+ our functor returned a <a class="link" href="../internals1/tuples.html" title="Tuples">boost::math::tuple</a>
+ rather than a value, then we would have had one entry for each element in
+ the tuple in addition to the input parameters.
+ </p>
+<p>
+ The first #define serves two purposes:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ It reduces the file sizes considerably: all those <code class="computeroutput"><span class="keyword">static_cast</span></code>'s
+ add up to a lot of bytes otherwise (they are needed to suppress compiler
+ warnings when <code class="computeroutput"><span class="identifier">T</span></code> is narrower
+ than a <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>).
+ </li>
+<li class="listitem">
+ It provides a useful customisation point: for example if we were testing
+ a user-defined type that has more precision than a <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> we could change it to:
+ </li>
+</ul></div>
+<p>
+ <code class="literal">#define SC_(x) lexical_cast<T>(BOOST_STRINGIZE(x))</code>
+ </p>
+<p>
+ in order to ensure that no truncation of the values occurs prior to conversion
+ to <code class="computeroutput"><span class="identifier">T</span></code>. Note that this isn't
+ used by default as it's rather hard on the compiler when the table is large.
+ </p>
+<h6>
+<a name="math_toolkit.internals2.test_data.h4"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.test_data.example_3_profiling_a_continued_"></a></span><a class="link" href="test_data.html#math_toolkit.internals2.test_data.example_3_profiling_a_continued_">Example
+ 3: Profiling a Continued Fraction for Convergence and Accuracy</a>
+ </h6>
+<p>
+ Alternatively, lets say we want to profile a continued fraction for convergence
+ and error. As an example, we'll use the continued fraction for the upper
+ incomplete gamma function, the following function object returns the next
+ a<sub>N </sub> and b<sub>N </sub> of the continued fraction each time it's invoked:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">upper_incomplete_gamma_fract</span>
+<span class="special">{</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">a</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">k</span><span class="special">;</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="identifier">upper_incomplete_gamma_fract</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">a1</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">z1</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">z</span><span class="special">(</span><span class="identifier">z1</span><span class="special">-</span><span class="identifier">a1</span><span class="special">+</span><span class="number">1</span><span class="special">),</span> <span class="identifier">a</span><span class="special">(</span><span class="identifier">a1</span><span class="special">),</span> <span class="identifier">k</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()()</span>
+ <span class="special">{</span>
+ <span class="special">++</span><span class="identifier">k</span><span class="special">;</span>
+ <span class="identifier">z</span> <span class="special">+=</span> <span class="number">2</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">result_type</span><span class="special">(</span><span class="identifier">k</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">-</span> <span class="identifier">k</span><span class="special">),</span> <span class="identifier">z</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ We want to measure both the relative error, and the rate of convergence of
+ this fraction, so we'll write a functor that returns both as a <a class="link" href="../internals1/tuples.html" title="Tuples">boost::math::tuple</a>:
+ class test_data will unpack the tuple for us, and create one column of data
+ for each element in the tuple (in addition to the input parameters):
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">test_data</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">ntl</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">profile_gamma_fraction</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <a class="link" href="../internals1/tuples.html" title="Tuples">boost::math::tuple</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span> <span class="identifier">val</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">;</span>
+ <span class="comment">// estimate the true value, using arbitary precision</span>
+ <span class="comment">// arithmetic and NTL::RR:</span>
+ <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span> <span class="identifier">rval</span><span class="special">(</span><span class="identifier">val</span><span class="special">);</span>
+ <span class="identifier">upper_incomplete_gamma_fract</span><span class="special"><</span><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">></span> <span class="identifier">f1</span><span class="special">(</span><span class="identifier">rval</span><span class="special">,</span> <span class="identifier">rval</span><span class="special">);</span>
+ <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span> <span class="identifier">true_val</span> <span class="special">=</span> <span class="identifier">continued_fraction_a</span><span class="special">(</span><span class="identifier">f1</span><span class="special">,</span> <span class="number">1000</span><span class="special">);</span>
+ <span class="comment">//</span>
+ <span class="comment">// Now get the aproximation at double precision, along with the number of</span>
+ <span class="comment">// iterations required:</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span> <span class="identifier">iters</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">>::</span><span class="identifier">max</span><span class="special">();</span>
+ <span class="identifier">upper_incomplete_gamma_fract</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">f2</span><span class="special">(</span><span class="identifier">val</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="identifier">T</span> <span class="identifier">found_val</span> <span class="special">=</span> <span class="identifier">continued_fraction_a</span><span class="special">(</span><span class="identifier">f2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span><span class="special">,</span> <span class="identifier">iters</span><span class="special">);</span>
+ <span class="comment">//</span>
+ <span class="comment">// Work out the relative error, as measured in units of epsilon:</span>
+ <span class="identifier">T</span> <span class="identifier">err</span> <span class="special">=</span> <span class="identifier">real_cast</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">relative_error</span><span class="special">(</span><span class="identifier">true_val</span><span class="special">,</span> <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">(</span><span class="identifier">found_val</span><span class="special">))</span> <span class="special">/</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">());</span>
+ <span class="comment">//</span>
+ <span class="comment">// now just return the results as a tuple:</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">make_tuple</span><span class="special">(</span><span class="identifier">err</span><span class="special">,</span> <span class="identifier">iters</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Feeding that functor into test_data allows rapid output of csv data, for
+ whatever type <code class="computeroutput"><span class="identifier">T</span></code> we may be
+ interested in:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">;</span>
+ <span class="comment">// create an object to hold the data:</span>
+ <span class="identifier">test_data</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">data</span><span class="special">;</span>
+ <span class="comment">// insert 500 points at uniform intervals between just after 0 and 100:</span>
+ <span class="identifier">data</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">profile_gamma_fraction</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(),</span> <span class="identifier">make_periodic_param</span><span class="special">(</span><span class="number">0.01</span><span class="special">,</span> <span class="number">100.0</span><span class="special">,</span> <span class="number">100</span><span class="special">));</span>
+ <span class="comment">// print out in csv format:</span>
+ <span class="identifier">write_csv</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">,</span> <span class="identifier">data</span><span class="special">,</span> <span class="string">", "</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This time there's no need to plot a graph, the first few rows are:
+ </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="keyword">and</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">Error</span><span class="special">/</span><span class="identifier">epsilon</span><span class="special">,</span> <span class="identifier">Iterations</span> <span class="identifier">required</span>
+
+<span class="number">0.01</span><span class="special">,</span> <span class="number">9723.14</span><span class="special">,</span> <span class="number">4726</span>
+<span class="number">1.0099</span><span class="special">,</span> <span class="number">9.54818</span><span class="special">,</span> <span class="number">87</span>
+<span class="number">2.0098</span><span class="special">,</span> <span class="number">3.84777</span><span class="special">,</span> <span class="number">40</span>
+<span class="number">3.0097</span><span class="special">,</span> <span class="number">0.728358</span><span class="special">,</span> <span class="number">25</span>
+<span class="number">4.0096</span><span class="special">,</span> <span class="number">2.39712</span><span class="special">,</span> <span class="number">21</span>
+<span class="number">5.0095</span><span class="special">,</span> <span class="number">0.233263</span><span class="special">,</span> <span class="number">16</span>
+</pre>
+<p>
+ So it's pretty clear that this fraction shouldn't be used for small values
+ of a and z.
+ </p>
+<h5>
+<a name="math_toolkit.internals2.test_data.h5"></a>
+ <span class="phrase"><a name="math_toolkit.internals2.test_data.reference"></a></span><a class="link" href="test_data.html#math_toolkit.internals2.test_data.reference">reference</a>
+ </h5>
+<p>
+ Most of this tool has been described already in the examples above, we'll
+ just add the following notes on the non-member functions:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_random_param</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">start_range</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">end_range</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n_points</span><span class="special">);</span>
+</pre>
+<p>
+ Tells class test_data to test <span class="emphasis"><em>n_points</em></span> random values
+ in the range [start_range,end_range].
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_periodic_param</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">start_range</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">end_range</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n_points</span><span class="special">);</span>
+</pre>
+<p>
+ Tells class test_data to test <span class="emphasis"><em>n_points</em></span> evenly spaced
+ values in the range [start_range,end_range].
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_power_param</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">basis</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">start_exponent</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">end_exponent</span><span class="special">);</span>
+</pre>
+<p>
+ Tells class test_data to test points of the form <span class="emphasis"><em>basis + R * 2<sup>expon</sup></em></span>
+ for each <span class="emphasis"><em>expon</em></span> in the range [start_exponent, end_exponent],
+ and <span class="emphasis"><em>R</em></span> a random number in [0.5, 1].
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">get_user_parameter_info</span><span class="special">(</span><span class="identifier">parameter_info</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">info</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">param_name</span><span class="special">);</span>
+</pre>
+<p>
+ Prompts the user for the parameter range and form to use.
+ </p>
+<p>
+ Finally, if we don't want the parameter to be included in the output, we
+ can tell test_data by setting it a "dummy parameter":
+ </p>
+<pre class="programlisting"><span class="identifier">parameter_info</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">make_random_param</span><span class="special">(</span><span class="number">2.0</span><span class="special">,</span> <span class="number">5.0</span><span class="special">,</span> <span class="number">10</span><span class="special">);</span>
+<span class="identifier">p</span><span class="special">.</span><span class="identifier">type</span> <span class="special">|=</span> <span class="identifier">dummy_param</span><span class="special">;</span>
+</pre>
+<p>
+ This is useful when the functor used transforms the parameter in some way
+ before passing it to the function under test, usually the functor will then
+ return both the transformed input and the result in a tuple, so there's no
+ need for the original pseudo-parameter to be included in program output.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="error_test.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals2.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../using_udt.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/internals_overview.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/internals_overview.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Overview</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../toolkit.html" title="Chapter 11. Internals (Series, Rationals and Continued Fractions, Root Finding, Function Minimization, Testing and Development Tools)">
+<link rel="prev" href="../toolkit.html" title="Chapter 11. Internals (Series, Rationals and Continued Fractions, Root Finding, Function Minimization, Testing and Development Tools)">
+<link rel="next" href="internals1.html" title="Utilities & internals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../toolkit.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="internals1.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_internals_overview">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.internals_overview"></a><a class="link" href="internals_overview.html" title="Overview">Overview</a>
+</h2></div></div></div>
+<p>
+ This section contains internal utilities used by the library's implementation
+ along with tools used in development and testing. These tools have only minimal
+ documentation, and crucially <span class="emphasis"><em>do not have stable interfaces</em></span>.
+ </p>
+<p>
+ There is no doubt that these components can be improved, but they are also
+ largely incidental to the main purpose of this library.
+ </p>
+<p>
+ These tools are designed to "just get the job done", and receive
+ minimal documentation here, in the hopes that they will help stimulate further
+ submissions to this library.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../toolkit.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="internals1.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/interp.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/interp.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Interpreting these Results</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../perf.html" title="Chapter 14. Performance">
+<link rel="prev" href="perf_over2.html" title="Performance Overview">
+<link rel="next" href="getting_best.html" title="Getting the Best Performance from this Library">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="perf_over2.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="getting_best.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_interp">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.interp"></a><a class="link" href="interp.html" title="Interpreting these Results">Interpreting these Results</a>
+</h2></div></div></div>
+<p>
+ In all of the following tables, the best performing result in each row, is
+ assigned a relative value of "1" and shown in bold, so a score of
+ "2" means <span class="emphasis"><em>"twice as slow as the best performing result".</em></span>
+ Actual timings in seconds per function call are also shown in parenthesis.
+ </p>
+<p>
+ Result were obtained on a system with an Intel 2.8GHz Pentium 4 processor with
+ 2Gb of RAM and running either Windows XP or Mandriva Linux.
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ As usual with performance results these should be taken with a large pinch
+ of salt: relative performance is known to shift quite a bit depending upon
+ the architecture of the particular test system used. Further more, our performance
+ results were obtained using our own test data: these test values are designed
+ to provide good coverage of our code and test all the appropriate corner
+ cases. They do not necessarily represent "typical" usage: whatever
+ that may be!
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Since these tests were run, most compilers have improved their code optimisation,
+ and processor speeds have improved too, so these results are known to be
+ out of date.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="perf_over2.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="getting_best.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/intro_pol_overview.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/intro_pol_overview.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,108 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Policies</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="config_macros.html" title="Configuration Macros">
+<link rel="next" href="threads.html" title="Thread Safety">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="config_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="threads.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_intro_pol_overview">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.intro_pol_overview"></a><a class="link" href="intro_pol_overview.html" title="Policies">Policies</a>
+</h2></div></div></div>
+<p>
+ Policies are a powerful fine-grain mechanism that allow you to customise the
+ behaviour of this library according to your needs. There is more information
+ available in the <a class="link" href="pol_tutorial.html" title="Policy Tutorial">policy tutorial</a>
+ and the <a class="link" href="pol_ref.html" title="Policy Reference">policy reference</a>.
+ </p>
+<p>
+ Generally speaking, unless you find that the <a class="link" href="pol_tutorial/policy_tut_defaults.html" title="Policies Have Sensible Defaults">default
+ policy behaviour</a> when encountering 'bad' argument values does not meet
+ your needs, you should not need to worry about policies.
+ </p>
+<p>
+ Policies are a compile-time mechanism that allow you to change error-handling
+ or calculation precision either program wide, or at the call site.
+ </p>
+<p>
+ Although the policy mechanism itself is rather complicated, in practice it
+ is easy to use, and very flexible.
+ </p>
+<p>
+ Using policies you can control:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="pol_ref/error_handling_policies.html" title="Error Handling Policies">How results
+ from 'bad' arguments are handled</a>, including those that cannot be
+ fully evaluated.
+ </li>
+<li class="listitem">
+ How <a class="link" href="pol_ref/internal_promotion.html" title="Internal Floating-point Promotion Policies">accuracy is
+ controlled by internal promotion</a> to use more precise types.
+ </li>
+<li class="listitem">
+ What working <a class="link" href="pol_ref/precision_pol.html" title="Precision Policies">precision</a>
+ should be used to calculate results.
+ </li>
+<li class="listitem">
+ What to do when a <a class="link" href="pol_ref/assert_undefined.html" title="Mathematically Undefined Function Policies">mathematically
+ undefined function</a> is used: Should this raise a run-time or compile-time
+ error?
+ </li>
+<li class="listitem">
+ Whether <a class="link" href="pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">discrete
+ functions</a>, like the binomial, should return real or only integral
+ values, and how they are rounded.
+ </li>
+<li class="listitem">
+ How many iterations a special function is permitted to perform in a series
+ evaluation or root finding algorithm before it gives up and raises an
+ <a class="link" href="error_handling.html#math_toolkit.error_handling.evaluation_error">evaluation_error</a>.
+ </li>
+</ul></div>
+<p>
+ You can control policies:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Using <a class="link" href="pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults">macros</a>
+ to change any default policy: the is the prefered method for installation
+ wide policies.
+ </li>
+<li class="listitem">
+ At your chosen <a class="link" href="pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope">namespace
+ scope</a> for distributions and/or functions: this is the prefered method
+ for project, namespace, or translation unit scope policies.
+ </li>
+<li class="listitem">
+ In an ad-hoc manner <a class="link" href="pol_tutorial/ad_hoc_sf_policies.html" title="Changing the Policy on an Ad Hoc Basis for the Special Functions">by
+ passing a specific policy to a special function</a>, or to a <a class="link" href="pol_tutorial/ad_hoc_dist_policies.html" title="Setting Policies for Distributions on an Ad Hoc Basis">statistical
+ distribution</a>.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="config_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="threads.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/introduction.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/introduction.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Introduction</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="next" href="synopsis.html" title="Synopsis">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../gcd_lcm.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="synopsis.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_introduction">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
+</h2></div></div></div>
+<p>
+ The class and function templates in <boost/math/common_factor.hpp> provide
+ run-time and compile-time evaluation of the greatest common divisor (GCD) or
+ least common multiple (LCM) of two integers. These facilities are useful for
+ many numeric-oriented generic programming problems.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../gcd_lcm.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="synopsis.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Inverse Hyperbolic Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="sinc/sinhc_pi.html" title="sinhc_pi">
+<link rel="next" href="inv_hyper/inv_hyper_over.html" title="Inverse Hyperbolic Functions Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sinc/sinhc_pi.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="inv_hyper/inv_hyper_over.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_inv_hyper">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.inv_hyper"></a><a class="link" href="inv_hyper.html" title="Inverse Hyperbolic Functions">Inverse Hyperbolic Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="inv_hyper/inv_hyper_over.html">Inverse Hyperbolic
+ Functions Overview</a></span></dt>
+<dt><span class="section">acosh</span></dt>
+<dt><span class="section">asinh</span></dt>
+<dt><span class="section">atanh</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sinc/sinhc_pi.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="inv_hyper/inv_hyper_over.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/acosh.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/acosh.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,119 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>acosh</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../inv_hyper.html" title="Inverse Hyperbolic Functions">
+<link rel="prev" href="inv_hyper_over.html" title="Inverse Hyperbolic Functions Overview">
+<link rel="next" href="asinh.html" title="asinh">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="inv_hyper_over.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inv_hyper.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="asinh.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_inv_hyper_acosh">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.inv_hyper.acosh"></a><a class="link" href="acosh.html" title="acosh">acosh</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">acosh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">acosh</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">acosh</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Computes the reciprocal of (the restriction to the range of <code class="literal">[0;+∞[</code>)
+ <a class="link" href="inv_hyper_over.html" title="Inverse Hyperbolic Functions Overview">the hyperbolic cosine
+ function</a>, at x. Values returned are positive.
+ </p>
+<p>
+ If x is in the range <code class="literal">]-∞;+1[</code> then returns the result of
+ <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return type is <code class="computeroutput"><span class="keyword">double</span></code> when T is an integer type, and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/acosh.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.inv_hyper.acosh.h0"></a>
+ <span class="phrase"><a name="math_toolkit.inv_hyper.acosh.accuracy"></a></span><a class="link" href="acosh.html#math_toolkit.inv_hyper.acosh.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Generally accuracy is to within 1 or 2 epsilon across all supported platforms.
+ </p>
+<h5>
+<a name="math_toolkit.inv_hyper.acosh.h1"></a>
+ <span class="phrase"><a name="math_toolkit.inv_hyper.acosh.testing"></a></span><a class="link" href="acosh.html#math_toolkit.inv_hyper.acosh.testing">Testing</a>
+ </h5>
+<p>
+ This function is tested using a combination of random test values designed
+ to give full function coverage computed at high precision using the "naive"
+ formula:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/acosh1.png"></span>
+ </p>
+<p>
+ along with a selection of sanity check values computed using functions.wolfram.com
+ to at least 50 decimal digits.
+ </p>
+<h5>
+<a name="math_toolkit.inv_hyper.acosh.h2"></a>
+ <span class="phrase"><a name="math_toolkit.inv_hyper.acosh.implementation"></a></span><a class="link" href="acosh.html#math_toolkit.inv_hyper.acosh.implementation">Implementation</a>
+ </h5>
+<p>
+ For sufficiently large x, we can use the approximation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/acosh2.png"></span>
+ </p>
+<p>
+ For x sufficiently close to 1 we can use the approximation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/acosh4.png"></span>
+ </p>
+<p>
+ Otherwise for x close to 1 we can use the following rearrangement of the
+ primary definition to preserve accuracy:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/acosh3.png"></span>
+ </p>
+<p>
+ Otherwise the <a href="http://functions.wolfram.com/ElementaryFunctions/ArcCosh/02/" target="_top">primary
+ definition</a> is used:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/acosh1.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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_over.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inv_hyper.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="asinh.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/asinh.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/asinh.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,114 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>asinh</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../inv_hyper.html" title="Inverse Hyperbolic Functions">
+<link rel="prev" href="acosh.html" title="acosh">
+<link rel="next" href="atanh.html" title="atanh">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="acosh.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inv_hyper.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="atanh.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_inv_hyper_asinh">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.inv_hyper.asinh"></a><a class="link" href="asinh.html" title="asinh">asinh</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">asinh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">asinh</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">asinh</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Computes the reciprocal of <a class="link" href="inv_hyper_over.html" title="Inverse Hyperbolic Functions Overview">the
+ hyperbolic sine function</a>.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return type is <code class="computeroutput"><span class="keyword">double</span></code> when T is an integer type, and T otherwise.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/asinh.png" align="middle"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.inv_hyper.asinh.h0"></a>
+ <span class="phrase"><a name="math_toolkit.inv_hyper.asinh.accuracy"></a></span><a class="link" href="asinh.html#math_toolkit.inv_hyper.asinh.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Generally accuracy is to within 1 or 2 epsilon across all supported platforms.
+ </p>
+<h5>
+<a name="math_toolkit.inv_hyper.asinh.h1"></a>
+ <span class="phrase"><a name="math_toolkit.inv_hyper.asinh.testing"></a></span><a class="link" href="asinh.html#math_toolkit.inv_hyper.asinh.testing">Testing</a>
+ </h5>
+<p>
+ This function is tested using a combination of random test values designed
+ to give full function coverage computed at high precision using the "naive"
+ formula:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/asinh1.png"></span>
+ </p>
+<p>
+ along with a selection of sanity check values computed using functions.wolfram.com
+ to at least 50 decimal digits.
+ </p>
+<h5>
+<a name="math_toolkit.inv_hyper.asinh.h2"></a>
+ <span class="phrase"><a name="math_toolkit.inv_hyper.asinh.implementation"></a></span><a class="link" href="asinh.html#math_toolkit.inv_hyper.asinh.implementation">Implementation</a>
+ </h5>
+<p>
+ For sufficiently large x we can use the approximation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/asinh2.png"></span>
+ </p>
+<p>
+ While for very small x we can use the approximation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/asinh3.png"></span>
+ </p>
+<p>
+ For 0.5 > x > ε the following rearrangement of the primary definition
+ is used:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/asinh4.png"></span>
+ </p>
+<p>
+ Otherwise evalution is via the <a href="http://functions.wolfram.com/ElementaryFunctions/ArcSinh/02/" target="_top">primary
+ definition</a>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/asinh4.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="acosh.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inv_hyper.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="atanh.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/atanh.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/atanh.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,124 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>atanh</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../inv_hyper.html" title="Inverse Hyperbolic Functions">
+<link rel="prev" href="asinh.html" title="asinh">
+<link rel="next" href="../owens_t.html" title="Owen's T function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="asinh.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inv_hyper.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../owens_t.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_inv_hyper_atanh">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.inv_hyper.atanh"></a><a class="link" href="atanh.html" title="atanh">atanh</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">atanh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">atanh</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">atanh</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Computes the reciprocal of <a class="link" href="inv_hyper_over.html" title="Inverse Hyperbolic Functions Overview">the
+ hyperbolic tangent function</a>, at x.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ If x is in the range <code class="literal">]-∞;-1[</code> or in the range <code class="literal">]+1;+∞[</code>
+ then returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ If x is in the range <code class="literal">[-1;-1+ε[</code>, then the result of -<a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ is returned, with ε  
+denoting numeric_limits<T>::epsilon().
+ </p>
+<p>
+ If x is in the range <code class="literal">]+1-ε;+1]</code>, then the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ is returned, with ε  
+denoting numeric_limits<T>::epsilon().
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return type is <code class="computeroutput"><span class="keyword">double</span></code> when T is an integer type, and T otherwise.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/atanh.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.inv_hyper.atanh.h0"></a>
+ <span class="phrase"><a name="math_toolkit.inv_hyper.atanh.accuracy"></a></span><a class="link" href="atanh.html#math_toolkit.inv_hyper.atanh.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Generally accuracy is to within 1 or 2 epsilon across all supported platforms.
+ </p>
+<h5>
+<a name="math_toolkit.inv_hyper.atanh.h1"></a>
+ <span class="phrase"><a name="math_toolkit.inv_hyper.atanh.testing"></a></span><a class="link" href="atanh.html#math_toolkit.inv_hyper.atanh.testing">Testing</a>
+ </h5>
+<p>
+ This function is tested using a combination of random test values designed
+ to give full function coverage computed at high precision using the "naive"
+ formula:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/atanh1.png"></span>
+ </p>
+<p>
+ along with a selection of sanity check values computed using functions.wolfram.com
+ to at least 50 decimal digits.
+ </p>
+<h5>
+<a name="math_toolkit.inv_hyper.atanh.h2"></a>
+ <span class="phrase"><a name="math_toolkit.inv_hyper.atanh.implementation"></a></span><a class="link" href="atanh.html#math_toolkit.inv_hyper.atanh.implementation">Implementation</a>
+ </h5>
+<p>
+ For sufficiently small x we can use the approximation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/atanh2.png"></span>
+ </p>
+<p>
+ Otherwise the <a href="http://functions.wolfram.com/ElementaryFunctions/ArcTanh/02/" target="_top">primary
+ definition</a>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/atanh1.png"></span>
+ </p>
+<p>
+ or its equivalent form:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/atanh3.png"></span>
+ </p>
+<p>
+ is 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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="asinh.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inv_hyper.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../owens_t.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/inv_hyper_over.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/inv_hyper/inv_hyper_over.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,106 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Inverse Hyperbolic Functions Overview</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../inv_hyper.html" title="Inverse Hyperbolic Functions">
+<link rel="prev" href="../inv_hyper.html" title="Inverse Hyperbolic Functions">
+<link rel="next" href="acosh.html" title="acosh">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../inv_hyper.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inv_hyper.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="acosh.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_inv_hyper_inv_hyper_over">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.inv_hyper.inv_hyper_over"></a><a class="link" href="inv_hyper_over.html" title="Inverse Hyperbolic Functions Overview">Inverse Hyperbolic
+ Functions Overview</a>
+</h3></div></div></div>
+<p>
+ The exponential funtion is defined, for all objects for which this makes
+ sense, as the power series <span class="inlinemediaobject"><img src="../../../equations/special_functions_blurb1.png"></span>,
+ with <span class="emphasis"><em><code class="literal">n! = 1x2x3x4x5...xn</code></em></span> (and <span class="emphasis"><em><code class="literal">0!
+ = 1</code></em></span> by definition) being the factorial of <span class="emphasis"><em><code class="literal">n</code></em></span>.
+ In particular, the exponential function is well defined for real numbers,
+ complex number, quaternions, octonions, and matrices of complex numbers,
+ among others.
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em><span class="bold"><strong>Graph of exp on R</strong></span></em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="inlinemediaobject"><img src="../../../graphs/exp_on_r.png"></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em><span class="bold"><strong>Real and Imaginary parts of exp on C</strong></span></em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="inlinemediaobject"><img src="../../../graphs/im_exp_on_c.png"></span>
+ </p></blockquote></div>
+<p>
+ The hyperbolic functions are defined as power series which can be computed
+ (for reals, complex, quaternions and octonions) as:
+ </p>
+<p>
+ Hyperbolic cosine: <span class="inlinemediaobject"><img src="../../../equations/special_functions_blurb5.png"></span>
+ </p>
+<p>
+ Hyperbolic sine: <span class="inlinemediaobject"><img src="../../../equations/special_functions_blurb6.png"></span>
+ </p>
+<p>
+ Hyperbolic tangent: <span class="inlinemediaobject"><img src="../../../equations/special_functions_blurb7.png"></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em><span class="bold"><strong>Trigonometric functions on R (cos: purple;
+ sin: red; tan: blue)</strong></span></em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="inlinemediaobject"><img src="../../../graphs/trigonometric.png"></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em><span class="bold"><strong>Hyperbolic functions on r (cosh: purple;
+ sinh: red; tanh: blue)</strong></span></em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="inlinemediaobject"><img src="../../../graphs/hyperbolic.png"></span>
+ </p></blockquote></div>
+<p>
+ The hyperbolic sine is one to one on the set of real numbers, with range
+ the full set of reals, while the hyperbolic tangent is also one to one on
+ the set of real numbers but with range <code class="literal">[0;+∞[</code>, and therefore
+ both have inverses. The hyperbolic cosine is one to one from <code class="literal">]-∞;+1[</code>
+ onto <code class="literal">]-∞;-1[</code> (and from <code class="literal">]+1;+∞[</code> onto
+ <code class="literal">]-∞;-1[</code>); the inverse function we use here is defined on
+ <code class="literal">]-∞;-1[</code> with range <code class="literal">]-∞;+1[</code>.
+ </p>
+<p>
+ The inverse of the hyperbolic tangent is called the Argument hyperbolic tangent,
+ and can be computed as <span class="inlinemediaobject"><img src="../../../equations/special_functions_blurb15.png"></span>.
+ </p>
+<p>
+ The inverse of the hyperbolic sine is called the Argument hyperbolic sine,
+ and can be computed (for <code class="literal">[-1;-1+ε[</code>) as <span class="inlinemediaobject"><img src="../../../equations/special_functions_blurb17.png"></span>.
+ </p>
+<p>
+ The inverse of the hyperbolic cosine is called the Argument hyperbolic cosine,
+ and can be computed as <span class="inlinemediaobject"><img src="../../../equations/special_functions_blurb18.png"></span>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inv_hyper.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="acosh.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/issues.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/issues.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,1245 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Known Issues, and TODO List</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../status.html" title="Chapter 16. Library Status">
+<link rel="prev" href="history2.html" title="History and What's New">
+<link rel="next" href="credits.html" title="Credits and Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="history2.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../status.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="credits.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_issues">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.issues"></a><a class="link" href="issues.html" title="Known Issues, and TODO List">Known Issues, and TODO List</a>
+</h2></div></div></div>
+<p>
+ Predominantly this is a TODO list, or a list of possible future enhancements.
+ Items labled "High Priority" effect the proper functioning of the
+ component, and should be fixed as soon as possible. Items labled "Medium
+ Priority" are desirable enhancements, often pertaining to the performance
+ of the component, but do not effect it's accuracy or functionality. Items labled
+ "Low Priority" should probably be investigated at some point. Such
+ classifications are obviously highly subjective.
+ </p>
+<p>
+ If you don't see a component listed here, then we don't have any known issues
+ with it.
+ </p>
+<h5>
+<a name="math_toolkit.issues.h0"></a>
+ <span class="phrase"><a name="math_toolkit.issues.derivatives_of_bessel_functions_"></a></span><a class="link" href="issues.html#math_toolkit.issues.derivatives_of_bessel_functions_">Derivatives
+ of Bessel functions (and their zeros)</a>
+ </h5>
+<p>
+ Potentially, there could be native support for <code class="computeroutput"><span class="identifier">cyl_bessel_j_prime</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">cyl_neumann_prime</span><span class="special">()</span></code>. One could also imagine supporting the zeros
+ thereof, but they might be slower to calculate since root bracketing might
+ be needed instead of Newton iteration (for the lack of 2nd derivatives).
+ </p>
+<p>
+ Since Boost.Math's Bessel functions are so excellent, the quick way to <code class="computeroutput"><span class="identifier">cyl_bessel_j_prime</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">cyl_neumann_prime</span><span class="special">()</span></code>
+ would be via relationship with <code class="computeroutput"><span class="identifier">cyl_bessel_j</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">cyl_neumann</span><span class="special">()</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.issues.h1"></a>
+ <span class="phrase"><a name="math_toolkit.issues.tgamma"></a></span><a class="link" href="issues.html#math_toolkit.issues.tgamma">tgamma</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Can the <a class="link" href="lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a>
+ be optimized any further? (low priority)
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.issues.h2"></a>
+ <span class="phrase"><a name="math_toolkit.issues.incomplete_beta"></a></span><a class="link" href="issues.html#math_toolkit.issues.incomplete_beta">Incomplete
+ Beta</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Investigate Didonato and Morris' asymptotic expansion for large a and b
+ (medium priority).
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.issues.h3"></a>
+ <span class="phrase"><a name="math_toolkit.issues.inverse_gamma"></a></span><a class="link" href="issues.html#math_toolkit.issues.inverse_gamma">Inverse
+ Gamma</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Investigate whether we can skip iteration altogether if the first approximation
+ is good enough (Medium Priority).
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.issues.h4"></a>
+ <span class="phrase"><a name="math_toolkit.issues.polynomials"></a></span><a class="link" href="issues.html#math_toolkit.issues.polynomials">Polynomials</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ The Legendre and Laguerre Polynomials have surprisingly different error
+ rates on different platforms, considering they are evaluated with only
+ basic arithmetic operations. Maybe this is telling us something, or maybe
+ not (Low Priority).
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.issues.h5"></a>
+ <span class="phrase"><a name="math_toolkit.issues.elliptic_integrals"></a></span><a class="link" href="issues.html#math_toolkit.issues.elliptic_integrals">Elliptic
+ Integrals</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Carlson's algorithms are essentially unchanged from Xiaogang Zhang's Google
+ Summer of Code student project, and are based on Carlson's original papers.
+ However, Carlson has revised his algorithms since then (refer to the references
+ in the elliptic integral docs for a list), to improve performance and accuracy,
+ we may be able to take advantage of these improvements too (Low Priority).
+ </li>
+<li class="listitem">
+ [para Carlson's algorithms (mainly R<sub>J</sub>) are somewhat prone to internal overflow/underflow
+ when the arguments are very large or small. The homogeneity relations:]
+ [para R<sub>F</sub>(ka, kb, kc) = k<sup>-1/2</sup> R<sub>F</sub>(a, b, c)] [para and] [para R<sub>J</sub>(ka, kb, kc,
+ kr) = k<sup>-3/2</sup> R<sub>J</sub>(a, b, c, r)] [para could be used to sidestep trouble here:
+ provided the problem domains can be accurately identified. (Medium Priority).]
+ </li>
+<li class="listitem">
+ Carlson's R<sub>C</sub> can be reduced to elementary funtions (asin and log), would
+ it be more efficient evaluated this way, rather than by Carlson's algorithms?
+ (Low Priority).
+ </li>
+<li class="listitem">
+ Should we add an implementation of Carlson's R<sub>G</sub>? It's not required for
+ the Legendre form integrals, but some people may find it useful (Low Priority).
+ </li>
+<li class="listitem">
+ There are a several other integrals: D(φ, k), Z(β, k), Λ<sub>0</sub>(β, k) and Bulirsch's
+ <span class="emphasis"><em>el</em></span> functions that could be implemented using Carlson's
+ integrals (Low Priority).
+ </li>
+<li class="listitem">
+ The integrals K(k) and E(k) could be implemented using rational approximations
+ (both for efficiency and accuracy), assuming we can find them. (Medium
+ Priority).
+ </li>
+<li class="listitem">
+ There is a sub-domain of <a class="link" href="ellint/ellint_3.html" title="Elliptic Integrals of the Third Kind - Legendre Form">ellint_3</a>
+ that is unimplemented (see the docs for details), currently it's not clear
+ how to solve this issue, or if it's ever likely to be an real problem in
+ practice - especially as most other implementations don't support this
+ domain either (Medium Priority).
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.issues.h6"></a>
+ <span class="phrase"><a name="math_toolkit.issues.owen_s_t_function"></a></span><a class="link" href="issues.html#math_toolkit.issues.owen_s_t_function">Owen's
+ T Function</a>
+ </h5>
+<p>
+ There is a problem area at arbitrary precision when <span class="emphasis"><em>a</em></span>
+ is very close to 1. However, note that the value for <span class="emphasis"><em>T(h, 1)</em></span>
+ is well known and easy to compute, and if we replaced the <span class="emphasis"><em>a<sup>k</sup></em></span>
+ terms in series T1, T2 or T4 by <span class="emphasis"><em>(a<sup>k</sup> - 1)</em></span> then we would
+ have the difference between <span class="emphasis"><em>T(h, a)</em></span> and <span class="emphasis"><em>T(h,
+ 1)</em></span>. Unfortunately this doesn't improve the convergence of those
+ series in that area. It certainly looks as though a new series in terms of
+ <span class="emphasis"><em>(1-a)<sup>k</sup></em></span> is both possible and desirable in this area, but
+ it remains elusive at present.
+ </p>
+<h5>
+<a name="math_toolkit.issues.h7"></a>
+ <span class="phrase"><a name="math_toolkit.issues.jocobi_elliptic_functions"></a></span><a class="link" href="issues.html#math_toolkit.issues.jocobi_elliptic_functions">Jocobi
+ elliptic functions</a>
+ </h5>
+<p>
+ These are useful in engineering applications - we have had a request to add
+ these.
+ </p>
+<h5>
+<a name="math_toolkit.issues.h8"></a>
+ <span class="phrase"><a name="math_toolkit.issues.statistical_distributions"></a></span><a class="link" href="issues.html#math_toolkit.issues.statistical_distributions">Statistical
+ distributions</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Student's t Perhaps switch to normal distribution as a better approximation
+ for very large degrees of freedom?
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.issues.h9"></a>
+ <span class="phrase"><a name="math_toolkit.issues.feature_requests"></a></span><a class="link" href="issues.html#math_toolkit.issues.feature_requests">Feature
+ Requests</a>
+ </h5>
+<p>
+ The following table lists distributions that are found in other packages but
+ which are not yet present here, the more frequently the distribution is found,
+ the higher the priority for implementing it:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Distribution
+ </p>
+ </th>
+<th>
+ <p>
+ R
+ </p>
+ </th>
+<th>
+ <p>
+ Mathematica 6
+ </p>
+ </th>
+<th>
+ <p>
+ NIST
+ </p>
+ </th>
+<th>
+ <p>
+ Regress+
+ </p>
+ </th>
+<th>
+ <p>
+ Matlab
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Geometric
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Multinomial
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Tukey Lambda
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Half Normal / Folded Normal
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Chi
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Gumbel
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Discrete Uniform
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Log Series
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Nakagami (generalised Chi)
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Log Logistic
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Tukey (Studentized range)
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Wilcoxon rank sum
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Wincoxon signed rank
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Non-central Beta
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Maxwell
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beta-Binomial
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beta-negative Binomial
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Zipf
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Birnbaum-Saunders / Fatigue Life
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Double Exponential
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Power Normal
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Power Lognormal
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Cosine
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Double Gamma
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Double Weibul
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Hyperbolic Secant
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Semicircular
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Bradford
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Birr / Fisk
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reciprocal
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ X
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Kolmogorov Distribution
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Also asked for more than once:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Add support for interpolated distributions, possibly combine with numeric
+ integration and differentiation.
+ </li>
+<li class="listitem">
+ Add support for bivariate and multivariate distributions: most especially
+ the normal.
+ </li>
+<li class="listitem">
+ Add support for the log of the cdf and pdf: this is mainly a performance
+ optimisation since we can avoid some special function calls for some distributions
+ by returning the log of the result.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="history2.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../status.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="credits.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="ellint/ellint_3.html" title="Elliptic Integrals of the Third Kind - Legendre Form">
+<link rel="next" href="jacobi/jac_over.html" title="Overvew of the Jacobi Elliptic Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ellint/ellint_3.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi/jac_over.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.jacobi"></a><a class="link" href="jacobi.html" title="Jacobi Elliptic Functions">Jacobi Elliptic Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="jacobi/jac_over.html">Overvew of the Jacobi Elliptic
+ Functions</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_elliptic.html">Jacobi Elliptic
+ SN, CN and DN</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_cd.html">Jacobi Elliptic Function
+ cd</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_cn.html">Jacobi Elliptic Function
+ cn</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_cs.html">Jacobi Elliptic Function
+ cs</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_dc.html">Jacobi Elliptic Function
+ dc</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_dn.html">Jacobi Elliptic Function
+ dn</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_ds.html">Jacobi Elliptic Function
+ ds</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_nc.html">Jacobi Elliptic Function
+ nc</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_nd.html">Jacobi Elliptic Function
+ nd</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_ns.html">Jacobi Elliptic Function
+ ns</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_sc.html">Jacobi Elliptic Function
+ sc</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_sd.html">Jacobi Elliptic Function
+ sd</a></span></dt>
+<dt><span class="section"><a href="jacobi/jacobi_sn.html">Jacobi Elliptic Function
+ sn</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="ellint/ellint_3.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi/jac_over.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jac_over.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jac_over.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,113 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Overvew of the Jacobi Elliptic Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="next" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../jacobi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_elliptic.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jac_over">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jac_over"></a><a class="link" href="jac_over.html" title="Overvew of the Jacobi Elliptic Functions">Overvew of the Jacobi Elliptic
+ Functions</a>
+</h3></div></div></div>
+<p>
+ There are twelve Jacobi Elliptic functions, of which the three copolar functions
+ <span class="emphasis"><em>sn</em></span>, <span class="emphasis"><em>cn</em></span> and <span class="emphasis"><em>dn</em></span>
+ are the most important as the other nine can be computed from these three
+ [2] [3] [4].
+ </p>
+<p>
+ These functions each take two arguments: a parameter, and a variable as described
+ below.
+ </p>
+<p>
+ Like all elliptic functions these can be parameterised in a number of ways:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ In terms of a parameter <span class="emphasis"><em>m</em></span>.
+ </li>
+<li class="listitem">
+ In terms of the elliptic modulus <span class="emphasis"><em>k</em></span> where <span class="emphasis"><em>m
+ = k<sup>2</sup></em></span>.
+ </li>
+<li class="listitem">
+ In terms of the modular angle α, where <span class="emphasis"><em>m = sin<sup>2</sup>α</em></span>.
+ </li>
+</ul></div>
+<p>
+ In our implementation, these functions all take the elliptic modulus <span class="emphasis"><em>k</em></span>
+ as the parameter.
+ </p>
+<p>
+ In addition the variable <span class="emphasis"><em>u</em></span> is sometimes expressed as
+ an amplitude φ, in our implementation we always use <span class="emphasis"><em>u</em></span>.
+ </p>
+<p>
+ Finally note that our functions all take the elliptic modulus as the first
+ argument - this is for alignment with the Elliptic Integrals.
+ </p>
+<p>
+ There are twenve functions for computing the twelve individual Jacobi elliptic
+ functions: <a class="link" href="jacobi_cd.html" title="Jacobi Elliptic Function cd">jacobi_cd</a>,
+ <a class="link" href="jacobi_cn.html" title="Jacobi Elliptic Function cn">jacobi_cn</a>, <a class="link" href="jacobi_cs.html" title="Jacobi Elliptic Function cs">jacobi_cs</a>,
+ <a class="link" href="jacobi_dc.html" title="Jacobi Elliptic Function dc">jacobi_dc</a>, <a class="link" href="jacobi_dn.html" title="Jacobi Elliptic Function dn">jacobi_dn</a>,
+ <a class="link" href="jacobi_ds.html" title="Jacobi Elliptic Function ds">jacobi_ds</a>, <a class="link" href="jacobi_nc.html" title="Jacobi Elliptic Function nc">jacobi_nc</a>,
+ <a class="link" href="jacobi_nd.html" title="Jacobi Elliptic Function nd">jacobi_nd</a>, <a class="link" href="jacobi_ns.html" title="Jacobi Elliptic Function ns">jacobi_ns</a>,
+ <a class="link" href="jacobi_sc.html" title="Jacobi Elliptic Function sc">jacobi_sc</a>, <a class="link" href="jacobi_sd.html" title="Jacobi Elliptic Function sd">jacobi_sd</a>
+ and <a class="link" href="jacobi_sn.html" title="Jacobi Elliptic Function sn">jacobi_sn</a>.
+ </p>
+<p>
+ They are all called as for example:
+ </p>
+<pre class="programlisting"><span class="identifier">jacobi_cs</span><span class="special">(</span><span class="identifier">k</span><span class="special">,</span> <span class="identifier">u</span><span class="special">);</span>
+</pre>
+<p>
+ Note however that these individual functions are all really thin wrappers
+ around the function <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>
+ which calculates the three copolar functions <span class="emphasis"><em>sn</em></span>, <span class="emphasis"><em>cn</em></span>
+ and <span class="emphasis"><em>dn</em></span> in a single function call. Thus if you need more
+ than one of these functions for a given set of arguments, it's most efficient
+ to use <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>.
+ </p>
+<div class="footnotes">
+<br><hr style="width:100; text-align:left;margin-left: 0">
+<div id="ftn.math_toolkit.jacobi.jac_over.f0" class="footnote"><p>[2]
+ <a href="http://en.wikipedia.org/wiki/Jacobi_elliptic_functions" target="_top">Wikipedia:
+ Jacobi elliptic functions</a>
+ </p></div>
+<div id="ftn.math_toolkit.jacobi.jac_over.f1" class="footnote"><p>[3]
+ <a href="http://mathworld.wolfram.com/JacobiEllipticFunctions.html" target="_top">Weisstein,
+ Eric W. "Jacobi Elliptic Functions." From MathWorld - A Wolfram
+ Web Resource.</a>
+ </p></div>
+<div id="ftn.math_toolkit.jacobi.jac_over.f2" class="footnote"><p>[4]
+ <a href="http://dlmf.nist.gov/22" target="_top">Digital Library of Mathematical Functions:
+ Jacobian Elliptic Functions</a>
+ </p></div>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../jacobi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_elliptic.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_cd.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_cd.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function cd</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">
+<link rel="next" href="jacobi_cn.html" title="Jacobi Elliptic Function cn">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_elliptic.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_cn.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_cd">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_cd"></a><a class="link" href="jacobi_cd.html" title="Jacobi Elliptic Function cd">Jacobi Elliptic Function
+ cd</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_cd.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_cd.synopsis"></a></span><a class="link" href="jacobi_cd.html#math_toolkit.jacobi.jacobi_cd.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_cd</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_cd</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_cd.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_cd.description"></a></span><a class="link" href="jacobi_cd.html#math_toolkit.jacobi.jacobi_cd.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>cd</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>,
+ with:
+ </p>
+<p>
+ <span class="emphasis"><em>cd(u, k) = cn(u, k) / dn(u, k)</em></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_cd.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_elliptic.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_cn.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_cn.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_cn.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function cn</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_cd.html" title="Jacobi Elliptic Function cd">
+<link rel="next" href="jacobi_cs.html" title="Jacobi Elliptic Function cs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_cd.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_cs.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_cn">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_cn"></a><a class="link" href="jacobi_cn.html" title="Jacobi Elliptic Function cn">Jacobi Elliptic Function
+ cn</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_cn.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_cn.synopsis"></a></span><a class="link" href="jacobi_cn.html#math_toolkit.jacobi.jacobi_cn.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_cn</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_cn</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_cn.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_cn.description"></a></span><a class="link" href="jacobi_cn.html#math_toolkit.jacobi.jacobi_cn.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>cn</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_cn.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_cd.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_cs.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_cs.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_cs.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function cs</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_cn.html" title="Jacobi Elliptic Function cn">
+<link rel="next" href="jacobi_dc.html" title="Jacobi Elliptic Function dc">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_cn.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_dc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_cs">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_cs"></a><a class="link" href="jacobi_cs.html" title="Jacobi Elliptic Function cs">Jacobi Elliptic Function
+ cs</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_cs.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_cs.synopsis"></a></span><a class="link" href="jacobi_cs.html#math_toolkit.jacobi.jacobi_cs.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_cs</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_cs</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_cs.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_cs.description"></a></span><a class="link" href="jacobi_cs.html#math_toolkit.jacobi.jacobi_cs.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>cs</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>,
+ with:
+ </p>
+<p>
+ <span class="emphasis"><em>cs(u, k) = cn(u, k) / sn(u, k)</em></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_cs.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_cn.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_dc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_dc.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_dc.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function dc</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_cs.html" title="Jacobi Elliptic Function cs">
+<link rel="next" href="jacobi_dn.html" title="Jacobi Elliptic Function dn">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_cs.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_dn.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_dc">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_dc"></a><a class="link" href="jacobi_dc.html" title="Jacobi Elliptic Function dc">Jacobi Elliptic Function
+ dc</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_dc.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_dc.synopsis"></a></span><a class="link" href="jacobi_dc.html#math_toolkit.jacobi.jacobi_dc.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_dc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_dc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_dc.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_dc.description"></a></span><a class="link" href="jacobi_dc.html#math_toolkit.jacobi.jacobi_dc.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>dc</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>,
+ with:
+ </p>
+<p>
+ <span class="emphasis"><em>dc(u, k) = dn(u, k) / cn(u, k)</em></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_dc.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_cs.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_dn.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_dn.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_dn.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function dn</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_dc.html" title="Jacobi Elliptic Function dc">
+<link rel="next" href="jacobi_ds.html" title="Jacobi Elliptic Function ds">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_dc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_ds.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_dn">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_dn"></a><a class="link" href="jacobi_dn.html" title="Jacobi Elliptic Function dn">Jacobi Elliptic Function
+ dn</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_dn.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_dn.synopsis"></a></span><a class="link" href="jacobi_dn.html#math_toolkit.jacobi.jacobi_dn.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_dn</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_dn</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_dn.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_dn.description"></a></span><a class="link" href="jacobi_dn.html#math_toolkit.jacobi.jacobi_dn.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>dn</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_dn.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_dc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_ds.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_ds.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_ds.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function ds</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_dn.html" title="Jacobi Elliptic Function dn">
+<link rel="next" href="jacobi_nc.html" title="Jacobi Elliptic Function nc">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_dn.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_nc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_ds">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_ds"></a><a class="link" href="jacobi_ds.html" title="Jacobi Elliptic Function ds">Jacobi Elliptic Function
+ ds</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_ds.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_ds.synopsis"></a></span><a class="link" href="jacobi_ds.html#math_toolkit.jacobi.jacobi_ds.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_ds</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_ds</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_ds.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_ds.description"></a></span><a class="link" href="jacobi_ds.html#math_toolkit.jacobi.jacobi_ds.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>ds</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>,
+ with:
+ </p>
+<p>
+ <span class="emphasis"><em>ds(u, k) = dn(u, k) / sn(u, k)</em></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_ds.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_dn.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_nc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_elliptic.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_elliptic.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,292 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic SN, CN and DN</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jac_over.html" title="Overvew of the Jacobi Elliptic Functions">
+<link rel="next" href="jacobi_cd.html" title="Jacobi Elliptic Function cd">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jac_over.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_cd.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_elliptic">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_elliptic"></a><a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">Jacobi Elliptic
+ SN, CN and DN</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_elliptic.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_elliptic.synopsis"></a></span><a class="link" href="jacobi_elliptic.html#math_toolkit.jacobi.jacobi_elliptic.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_elliptic</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="identifier">V</span><span class="special">*</span> <span class="identifier">pcn</span><span class="special">,</span> <span class="identifier">V</span><span class="special">*</span> <span class="identifier">pdn</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_elliptic</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="identifier">V</span><span class="special">*</span> <span class="identifier">pcn</span><span class="special">,</span> <span class="identifier">V</span><span class="special">*</span> <span class="identifier">pdn</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_elliptic.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_elliptic.description"></a></span><a class="link" href="jacobi_elliptic.html#math_toolkit.jacobi.jacobi_elliptic.description">Description</a>
+ </h5>
+<p>
+ The function <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>
+ calculates the three copolar Jacobi elliptic functions <span class="emphasis"><em>sn(u, k)</em></span>,
+ <span class="emphasis"><em>cn(u, k)</em></span> and <span class="emphasis"><em>dn(u, k)</em></span>. The returned
+ value is <span class="emphasis"><em>sn(u, k)</em></span>, and if provided, <span class="emphasis"><em>*pcn</em></span>
+ is set to <span class="emphasis"><em>cn(u, k)</em></span>, and <span class="emphasis"><em>*pdn</em></span> is
+ set to <span class="emphasis"><em>dn(u, k)</em></span>.
+ </p>
+<p>
+ The functions are defined as follows, given:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/jacobi1.png"></span>
+ </p>
+<p>
+ The the angle φ is called the <span class="emphasis"><em>amplitude</em></span> and:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/jacobi2.png"></span>
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ <span class="emphasis"><em>φ</em></span> is called the amplitude.
+ </p>
+<p>
+ <span class="emphasis"><em>k</em></span> is called the modulus.
+ </p>
+</td></tr>
+</table></div>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ Rather like other elliptic functions, the Jacobi functions are expressed
+ in a variety of different ways. In particular, the parameter <span class="emphasis"><em>k</em></span>
+ (the modulus) may also be expressed using a modular angle α, or a parameter
+ <span class="emphasis"><em>m</em></span>. These are related by:
+ </p>
+<p>
+ k = sinα
+ </p>
+<p>
+ m = k<sup>2</sup> = sin<sup>2</sup>α
+ </p>
+<p>
+ So that the function <span class="emphasis"><em>sn</em></span> (for example) may be expressed
+ as either:
+ </p>
+<p>
+ sn(u, k)
+ </p>
+<p>
+ sn(u \ α)
+ </p>
+<p>
+ sn(u| m)
+ </p>
+<p>
+ To further complicate matters, some texts refer to the <span class="emphasis"><em>complement
+ of the parameter m</em></span>, or 1 - m, where:
+ </p>
+<p>
+ 1 - m = 1 - k<sup>2</sup> = cos<sup>2</sup>α
+ </p>
+<p>
+ This implementation uses <span class="emphasis"><em>k</em></span> throughout, and makes this
+ the first argument to the functions: this is for alignment with the elliptic
+ integrals which match the requirements of the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Technical
+ Report on C++ Library Extensions</a>. However, you should be extra
+ careful when using these functions!
+ </p>
+</td></tr>
+</table></div>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The following graphs illustrate how these functions change as <span class="emphasis"><em>k</em></span>
+ changes: for small <span class="emphasis"><em>k</em></span> these are sine waves, while as
+ <span class="emphasis"><em>k</em></span> tends to 1 they become hyperbolic functions:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_sn.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_cn.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_dn.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_elliptic.h2"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_elliptic.accuracy"></a></span><a class="link" href="jacobi_elliptic.html#math_toolkit.jacobi.jacobi_elliptic.accuracy">Accuracy</a>
+ </h5>
+<p>
+ These functions are computed using only basic arithmetic operations and trigomometric
+ functions, so there isn't much variation in accuracy over differing platforms.
+ Typically errors are trivially small for small angles, and as is typical
+ for cyclic functions, grow as the angle increases. Note that only results
+ for the widest floating point type on the system are given as narrower types
+ have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively zero
+ error</a>. All values are relative errors in units of epsilon.
+ </p>
+<div class="table">
+<a name="math_toolkit.jacobi.jacobi_elliptic.errors_rates_in_the_jacobi_ellip"></a><p class="title"><b>Table 3.29. Errors Rates in the Jacobi Elliptic Functions</b></p>
+<div class="table-contents"><table class="table" summary="Errors Rates in the Jacobi Elliptic Functions">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ u < 1
+ </p>
+ </th>
+<th>
+ <p>
+ Large u
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 / Visual C++ 8.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2 Mean=0.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=44000 Mean=2500
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Ubuntu Linux / G++ 4.7
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.0 Mean=0.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=25000 Mean=1500
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.jacobi.jacobi_elliptic.h3"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_elliptic.testing"></a></span><a class="link" href="jacobi_elliptic.html#math_toolkit.jacobi.jacobi_elliptic.testing">Testing</a>
+ </h5>
+<p>
+ The tests use a mixture of spot test values calculated using the online calculator
+ at functions.wolfram.com,
+ and random test data generated using MPFR at 1000-bit precision and this
+ implementation.
+ </p>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_elliptic.h4"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_elliptic.implementation"></a></span><a class="link" href="jacobi_elliptic.html#math_toolkit.jacobi.jacobi_elliptic.implementation">Implementation</a>
+ </h5>
+<p>
+ For <span class="emphasis"><em>k > 1</em></span> we apply the relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/jacobi3.png"></span>
+ </p>
+<p>
+ Then filter off the special cases:
+ </p>
+<p>
+ <span class="emphasis"><em>sn(0, k) = 0</em></span> and <span class="emphasis"><em>cn(0, k) = dn(0, k) = 1</em></span>.
+ </p>
+<p>
+ <span class="emphasis"><em>sn(u, 0) = sin(u), cn(u, 0) = cos(u) and dn(u, 0) = 1</em></span>.
+ </p>
+<p>
+ <span class="emphasis"><em>sn(u, 1) = tanh(u), cn(u, 1) = dn(u, 1) = 1 / cosh(u)</em></span>.
+ </p>
+<p>
+ And for <span class="emphasis"><em>k<sup>4</sup> < ε</em></span> we have:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/jacobi4.png"></span>
+ </p>
+<p>
+ Otherwise the values are calculated using the method of <a href="http://dlmf.nist.gov/22.20#SS2" target="_top">arithmetic
+ geometric means</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jac_over.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_cd.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_nc.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_nc.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function nc</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_ds.html" title="Jacobi Elliptic Function ds">
+<link rel="next" href="jacobi_nd.html" title="Jacobi Elliptic Function nd">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_ds.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_nd.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_nc">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_nc"></a><a class="link" href="jacobi_nc.html" title="Jacobi Elliptic Function nc">Jacobi Elliptic Function
+ nc</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_nc.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_nc.synopsis"></a></span><a class="link" href="jacobi_nc.html#math_toolkit.jacobi.jacobi_nc.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_nc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_nc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_nc.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_nc.description"></a></span><a class="link" href="jacobi_nc.html#math_toolkit.jacobi.jacobi_nc.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>nc</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>,
+ with:
+ </p>
+<p>
+ <span class="emphasis"><em>nc(u, k) = 1 / cn(u, k)</em></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_nc.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_ds.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_nd.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_nd.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_nd.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function nd</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_nc.html" title="Jacobi Elliptic Function nc">
+<link rel="next" href="jacobi_ns.html" title="Jacobi Elliptic Function ns">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_nc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_ns.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_nd">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_nd"></a><a class="link" href="jacobi_nd.html" title="Jacobi Elliptic Function nd">Jacobi Elliptic Function
+ nd</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_nd.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_nd.synopsis"></a></span><a class="link" href="jacobi_nd.html#math_toolkit.jacobi.jacobi_nd.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_nd</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_nd</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_nd.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_nd.description"></a></span><a class="link" href="jacobi_nd.html#math_toolkit.jacobi.jacobi_nd.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>nd</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>,
+ with:
+ </p>
+<p>
+ <span class="emphasis"><em>nd(u, k) = 1 / dn(u, k)</em></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_nd.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_nc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_ns.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_ns.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_ns.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function ns</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_nd.html" title="Jacobi Elliptic Function nd">
+<link rel="next" href="jacobi_sc.html" title="Jacobi Elliptic Function sc">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_nd.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_sc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_ns">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_ns"></a><a class="link" href="jacobi_ns.html" title="Jacobi Elliptic Function ns">Jacobi Elliptic Function
+ ns</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_ns.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_ns.synopsis"></a></span><a class="link" href="jacobi_ns.html#math_toolkit.jacobi.jacobi_ns.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_ns</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_ns</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_ns.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_ns.description"></a></span><a class="link" href="jacobi_ns.html#math_toolkit.jacobi.jacobi_ns.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>ns</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>,
+ with:
+ </p>
+<p>
+ <span class="emphasis"><em>ns(u, k) = 1 / sn(u, k)</em></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_ns.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_nd.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_sc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_sc.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_sc.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function sc</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_ns.html" title="Jacobi Elliptic Function ns">
+<link rel="next" href="jacobi_sd.html" title="Jacobi Elliptic Function sd">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_ns.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_sd.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_sc">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_sc"></a><a class="link" href="jacobi_sc.html" title="Jacobi Elliptic Function sc">Jacobi Elliptic Function
+ sc</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_sc.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_sc.synopsis"></a></span><a class="link" href="jacobi_sc.html#math_toolkit.jacobi.jacobi_sc.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_sc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_sc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_sc.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_sc.description"></a></span><a class="link" href="jacobi_sc.html#math_toolkit.jacobi.jacobi_sc.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>sc</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>,
+ with:
+ </p>
+<p>
+ <span class="emphasis"><em>sc(u, k) = sn(u, k) / cn(u, k)</em></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_sc.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_ns.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_sd.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_sd.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_sd.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function sd</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_sc.html" title="Jacobi Elliptic Function sc">
+<link rel="next" href="jacobi_sn.html" title="Jacobi Elliptic Function sn">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_sc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_sn.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_sd">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_sd"></a><a class="link" href="jacobi_sd.html" title="Jacobi Elliptic Function sd">Jacobi Elliptic Function
+ sd</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_sd.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_sd.synopsis"></a></span><a class="link" href="jacobi_sd.html#math_toolkit.jacobi.jacobi_sd.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_sd</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_sd</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_sd.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_sd.description"></a></span><a class="link" href="jacobi_sd.html#math_toolkit.jacobi.jacobi_sd.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>sd</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>,
+ with:
+ </p>
+<p>
+ <span class="emphasis"><em>sd(u, k) = sn(u, k) / dn(u, k)</em></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_sd.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_sc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="jacobi_sn.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_sn.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/jacobi/jacobi_sn.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Jacobi Elliptic Function sn</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../jacobi.html" title="Jacobi Elliptic Functions">
+<link rel="prev" href="jacobi_sd.html" title="Jacobi Elliptic Function sd">
+<link rel="next" href="../zetas.html" title="Zeta Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi_sd.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../zetas.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_jacobi_jacobi_sn">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.jacobi.jacobi_sn"></a><a class="link" href="jacobi_sn.html" title="Jacobi Elliptic Function sn">Jacobi Elliptic Function
+ sn</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_sn.h0"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_sn.synopsis"></a></span><a class="link" href="jacobi_sn.html#math_toolkit.jacobi.jacobi_sn.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">jacobi_elliptic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_sn</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+ <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">jacobi_sn</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">k</span><span class="special">,</span> <span class="identifier">U</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.jacobi.jacobi_sn.h1"></a>
+ <span class="phrase"><a name="math_toolkit.jacobi.jacobi_sn.description"></a></span><a class="link" href="jacobi_sn.html#math_toolkit.jacobi.jacobi_sn.description">Description</a>
+ </h5>
+<p>
+ This function returns the Jacobi elliptic function <span class="emphasis"><em>sn</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is a trivial wrapper around <a class="link" href="jacobi_elliptic.html" title="Jacobi Elliptic SN, CN and DN">jacobi_elliptic</a>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/jacobi_sn.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi_sd.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../jacobi.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../zetas.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/lanczos.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/lanczos.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,567 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>The Lanczos Approximation</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../backgrounders.html" title="Chapter 15. Backgrounders">
+<link rel="prev" href="relative_error.html" title="Relative Error">
+<link rel="next" href="remez.html" title="The Remez Method">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="relative_error.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="remez.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_lanczos">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.lanczos"></a><a class="link" href="lanczos.html" title="The Lanczos Approximation">The Lanczos Approximation</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.lanczos.h0"></a>
+ <span class="phrase"><a name="math_toolkit.lanczos.motivation"></a></span><a class="link" href="lanczos.html#math_toolkit.lanczos.motivation">Motivation</a>
+ </h5>
+<p>
+ <span class="emphasis"><em>Why base gamma and gamma-like functions on the Lanczos approximation?</em></span>
+ </p>
+<p>
+ First of all I should make clear that for the gamma function over real numbers
+ (as opposed to complex ones) the Lanczos approximation (See <a href="http://en.wikipedia.org/wiki/Lanczos_approximation" target="_top">Wikipedia
+ or </a> Mathworld)
+ appears to offer no clear advantage over more traditional methods such as
+ <a href="http://en.wikipedia.org/wiki/Stirling_approximation" target="_top">Stirling's
+ approximation</a>. <a class="link" href="lanczos.html#pugh">Pugh</a> carried out an extensive
+ comparison of the various methods available and discovered that they were all
+ very similar in terms of complexity and relative error. However, the Lanczos
+ approximation does have a couple of properties that make it worthy of further
+ consideration:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The approximation has an easy to compute truncation error that holds for
+ all <span class="emphasis"><em>z > 0</em></span>. In practice that means we can use the
+ same approximation for all <span class="emphasis"><em>z > 0</em></span>, and be certain
+ that no matter how large or small <span class="emphasis"><em>z</em></span> is, the truncation
+ error will <span class="emphasis"><em>at worst</em></span> be bounded by some finite value.
+ </li>
+<li class="listitem">
+ The approximation has a form that is particularly amenable to analytic
+ manipulation, in particular ratios of gamma or gamma-like functions are
+ particularly easy to compute without resorting to logarithms.
+ </li>
+</ul></div>
+<p>
+ It is the combination of these two properties that make the approximation attractive:
+ Stirling's approximation is highly accurate for large z, and has some of the
+ same analytic properties as the Lanczos approximation, but can't easily be
+ used across the whole range of z.
+ </p>
+<p>
+ As the simplest example, consider the ratio of two gamma functions: one could
+ compute the result via lgamma:
+ </p>
+<pre class="programlisting"><span class="identifier">exp</span><span class="special">(</span><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">b</span><span class="special">));</span>
+</pre>
+<p>
+ However, even if lgamma is uniformly accurate to 0.5ulp, the worst case relative
+ error in the above can easily be shown to be:
+ </p>
+<pre class="programlisting"><span class="identifier">Erel</span> <span class="special">></span> <span class="identifier">a</span> <span class="special">*</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">a</span><span class="special">)/</span><span class="number">2</span> <span class="special">+</span> <span class="identifier">b</span> <span class="special">*</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">b</span><span class="special">)/</span><span class="number">2</span>
+</pre>
+<p>
+ For small <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span> that's not a problem,
+ but to put the relationship another way: <span class="emphasis"><em>each time a and b increase
+ in magnitude by a factor of 10, at least one decimal digit of precision will
+ be lost.</em></span>
+ </p>
+<p>
+ In contrast, by analytically combining like power terms in a ratio of Lanczos
+ approximation's, these errors can be virtually eliminated for small <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span>, and kept under control for very large (or very
+ small for that matter) <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span>. Of
+ course, computing large powers is itself a notoriously hard problem, but even
+ so, analytic combinations of Lanczos approximations can make the difference
+ between obtaining a valid result, or simply garbage. Refer to the implementation
+ notes for the <a class="link" href="sf_beta/beta_function.html" title="Beta">beta</a>
+ function for an example of this method in practice. The incomplete <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p
+ gamma</a> and <a class="link" href="sf_beta/ibeta_function.html" title="Incomplete Beta Functions">beta</a>
+ functions use similar analytic combinations of power terms, to combine gamma
+ and beta functions divided by large powers into single (simpler) expressions.
+ </p>
+<h5>
+<a name="math_toolkit.lanczos.h1"></a>
+ <span class="phrase"><a name="math_toolkit.lanczos.the_approximation"></a></span><a class="link" href="lanczos.html#math_toolkit.lanczos.the_approximation">The
+ Approximation</a>
+ </h5>
+<p>
+ The Lanczos Approximation to the Gamma Function is given by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos0.png"></span>
+ </p>
+<p>
+ Where S<sub>g</sub>(z) is an infinite sum, that is convergent for all z > 0, and <span class="emphasis"><em>g</em></span>
+ is an arbitrary parameter that controls the "shape" of the terms
+ in the sum which is given by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos0a.png"></span>
+ </p>
+<p>
+ With individual coefficients defined in closed form by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos0b.png"></span>
+ </p>
+<p>
+ However, evaluation of the sum in that form can lead to numerical instability
+ in the computation of the ratios of rising and falling factorials (effectively
+ we're multiplying by a series of numbers very close to 1, so roundoff errors
+ can accumulate quite rapidly).
+ </p>
+<p>
+ The Lanczos approximation is therefore often written in partial fraction form
+ with the leading constants absorbed by the coefficients in the sum:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos1.png"></span>
+ </p>
+<p>
+ where:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos2.png"></span>
+ </p>
+<p>
+ Again parameter <span class="emphasis"><em>g</em></span> is an arbitrarily chosen constant, and
+ <span class="emphasis"><em>N</em></span> is an arbitrarily chosen number of terms to evaluate
+ in the "Lanczos sum" part.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Some authors choose to define the sum from k=1 to N, and hence end up with
+ N+1 coefficients. This happens to confuse both the following discussion and
+ the code (since C++ deals with half open array ranges, rather than the closed
+ range of the sum). This convention is consistent with <a class="link" href="lanczos.html#godfrey">Godfrey</a>,
+ but not <a class="link" href="lanczos.html#pugh">Pugh</a>, so take care when referring to
+ the literature in this field.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.lanczos.h2"></a>
+ <span class="phrase"><a name="math_toolkit.lanczos.computing_the_coefficients"></a></span><a class="link" href="lanczos.html#math_toolkit.lanczos.computing_the_coefficients">Computing
+ the Coefficients</a>
+ </h5>
+<p>
+ The coefficients C0..CN-1 need to be computed from <span class="emphasis"><em>N</em></span> and
+ <span class="emphasis"><em>g</em></span> at high precision, and then stored as part of the program.
+ Calculation of the coefficients is performed via the method of <a class="link" href="lanczos.html#godfrey">Godfrey</a>;
+ let the constants be contained in a column vector P, then:
+ </p>
+<p>
+ P = D B C F
+ </p>
+<p>
+ where B is an NxN matrix:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos4.png"></span>
+ </p>
+<p>
+ D is an NxN matrix:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos3.png"></span>
+ </p>
+<p>
+ C is an NxN matrix:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos5.png"></span>
+ </p>
+<p>
+ and F is an N element column vector:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos6.png"></span>
+ </p>
+<p>
+ Note than the matrices B, D and C contain all integer terms and depend only
+ on <span class="emphasis"><em>N</em></span>, this product should be computed first, and then
+ multiplied by <span class="emphasis"><em>F</em></span> as the last step.
+ </p>
+<h5>
+<a name="math_toolkit.lanczos.h3"></a>
+ <span class="phrase"><a name="math_toolkit.lanczos.choosing_the_right_parameters"></a></span><a class="link" href="lanczos.html#math_toolkit.lanczos.choosing_the_right_parameters">Choosing
+ the Right Parameters</a>
+ </h5>
+<p>
+ The trick is to choose <span class="emphasis"><em>N</em></span> and <span class="emphasis"><em>g</em></span> to
+ give the desired level of accuracy: choosing a small value for <span class="emphasis"><em>g</em></span>
+ leads to a strictly convergent series, but one which converges only slowly.
+ Choosing a larger value of <span class="emphasis"><em>g</em></span> causes the terms in the series
+ to be large and/or divergent for about the first <span class="emphasis"><em>g-1</em></span> terms,
+ and to then suddenly converge with a "crunch".
+ </p>
+<p>
+ <a class="link" href="lanczos.html#pugh">Pugh</a> has determined the optimal value of <span class="emphasis"><em>g</em></span>
+ for <span class="emphasis"><em>N</em></span> in the range <span class="emphasis"><em>1 <= N <= 60</em></span>:
+ unfortunately in practice choosing these values leads to cancellation errors
+ in the Lanczos sum as the largest term in the (alternating) series is approximately
+ 1000 times larger than the result. These optimal values appear not to be useful
+ in practice unless the evaluation can be done with a number of guard digits
+ <span class="emphasis"><em>and</em></span> the coefficients are stored at higher precision than
+ that desired in the result. These values are best reserved for say, computing
+ to float precision with double precision arithmetic.
+ </p>
+<div class="table">
+<a name="math_toolkit.lanczos.optimal_choices_for_n_and_g_when"></a><p class="title"><b>Table 15.1. Optimal choices for N and g when computing with guard digits (source:
+ Pugh)</b></p>
+<div class="table-contents"><table class="table" summary="Optimal choices for N and g when computing with guard digits (source:
+ Pugh)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ N
+ </p>
+ </th>
+<th>
+ <p>
+ g
+ </p>
+ </th>
+<th>
+ <p>
+ Max Error
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 24
+ </p>
+ </td>
+<td>
+ <p>
+ 6
+ </p>
+ </td>
+<td>
+ <p>
+ 5.581
+ </p>
+ </td>
+<td>
+ <p>
+ 9.51e-12
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+<td>
+ <p>
+ 13.144565
+ </p>
+ </td>
+<td>
+ <p>
+ 9.2213e-23
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ The alternative described by <a class="link" href="lanczos.html#godfrey">Godfrey</a> is to perform
+ an exhaustive search of the <span class="emphasis"><em>N</em></span> and <span class="emphasis"><em>g</em></span>
+ parameter space to determine the optimal combination for a given <span class="emphasis"><em>p</em></span>
+ digit floating-point type. Repeating this work found a good approximation for
+ double precision arithmetic (close to the one <a class="link" href="lanczos.html#godfrey">Godfrey</a>
+ found), but failed to find really good approximations for 80 or 128-bit long
+ doubles. Further it was observed that the approximations obtained tended to
+ optimised for the small values of z (1 < z < 200) used to test the implementation
+ against the factorials. Computing ratios of gamma functions with large arguments
+ were observed to suffer from error resulting from the truncation of the Lancozos
+ series.
+ </p>
+<p>
+ <a class="link" href="lanczos.html#pugh">Pugh</a> identified all the locations where the theoretical
+ error of the approximation were at a minimum, but unfortunately has published
+ only the largest of these minima. However, he makes the observation that the
+ minima coincide closely with the location where the first neglected term (a<sub>N</sub>)
+ in the Lanczos series S<sub>g</sub>(z) changes sign. These locations are quite easy to
+ locate, albeit with considerable computer time. These "sweet spots"
+ need only be computed once, tabulated, and then searched when required for
+ an approximation that delivers the required precision for some fixed precision
+ type.
+ </p>
+<p>
+ Unfortunately, following this path failed to find a really good approximation
+ for 128-bit long doubles, and those found for 64 and 80-bit reals required
+ an excessive number of terms. There are two competing issues here: high precision
+ requires a large value of <span class="emphasis"><em>g</em></span>, but avoiding cancellation
+ errors in the evaluation requires a small <span class="emphasis"><em>g</em></span>.
+ </p>
+<p>
+ At this point note that the Lanczos sum can be converted into rational form
+ (a ratio of two polynomials, obtained from the partial-fraction form using
+ polynomial arithmetic), and doing so changes the coefficients so that <span class="emphasis"><em>they
+ are all positive</em></span>. That means that the sum in rational form can be
+ evaluated without cancellation error, albeit with double the number of coefficients
+ for a given N. Repeating the search of the "sweet spots", this time
+ evaluating the Lanczos sum in rational form, and testing only those "sweet
+ spots" whose theoretical error is less than the machine epsilon for the
+ type being tested, yielded good approximations for all the types tested. The
+ optimal values found were quite close to the best cases reported by <a class="link" href="lanczos.html#pugh">Pugh</a>
+ (just slightly larger <span class="emphasis"><em>N</em></span> and slightly smaller <span class="emphasis"><em>g</em></span>
+ for a given precision than <a class="link" href="lanczos.html#pugh">Pugh</a> reports), and even
+ though converting to rational form doubles the number of stored coefficients,
+ it should be noted that half of them are integers (and therefore require less
+ storage space) and the approximations require a smaller <span class="emphasis"><em>N</em></span>
+ than would otherwise be required, so fewer floating point operations may be
+ required overall.
+ </p>
+<p>
+ The following table shows the optimal values for <span class="emphasis"><em>N</em></span> and
+ <span class="emphasis"><em>g</em></span> when computing at fixed precision. These should be taken
+ as work in progress: there are no values for 106-bit significand machines (Darwin
+ long doubles & NTL quad_float), and further optimisation of the values
+ of <span class="emphasis"><em>g</em></span> may be possible. Errors given in the table are estimates
+ of the error due to truncation of the Lanczos infinite series to <span class="emphasis"><em>N</em></span>
+ terms. They are calculated from the sum of the first five neglected terms -
+ and are known to be rather pessimistic estimates - although it is noticeable
+ that the best combinations of <span class="emphasis"><em>N</em></span> and <span class="emphasis"><em>g</em></span>
+ occurred when the estimated truncation error almost exactly matches the machine
+ epsilon for the type in question.
+ </p>
+<div class="table">
+<a name="math_toolkit.lanczos.optimum_value_for_n_and_g_when_c"></a><p class="title"><b>Table 15.2. Optimum value for N and g when computing at fixed precision</b></p>
+<div class="table-contents"><table class="table" summary="Optimum value for N and g when computing at fixed precision">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform/Compiler Used
+ </p>
+ </th>
+<th>
+ <p>
+ N
+ </p>
+ </th>
+<th>
+ <p>
+ g
+ </p>
+ </th>
+<th>
+ <p>
+ Max Truncation Error
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 24
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, VC++ 7.1
+ </p>
+ </td>
+<td>
+ <p>
+ 6
+ </p>
+ </td>
+<td>
+ <p>
+ 1.428456135094165802001953125
+ </p>
+ </td>
+<td>
+ <p>
+ 9.41e-007
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, VC++ 7.1
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+<td>
+ <p>
+ 6.024680040776729583740234375
+ </p>
+ </td>
+<td>
+ <p>
+ 3.23e-016
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Suse Linux 9 IA64, gcc-3.3.3
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 12.2252227365970611572265625
+ </p>
+ </td>
+<td>
+ <p>
+ 2.34e-024
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 116
+ </p>
+ </td>
+<td>
+ <p>
+ HP Tru64 Unix 5.1B / Alpha, Compaq C++ V7.1-006
+ </p>
+ </td>
+<td>
+ <p>
+ 24
+ </p>
+ </td>
+<td>
+ <p>
+ 20.3209821879863739013671875
+ </p>
+ </td>
+<td>
+ <p>
+ 4.75e-035
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ Finally note that the Lanczos approximation can be written as follows by removing
+ a factor of exp(g) from the denominator, and then dividing all the coefficients
+ by exp(g):
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/lanczos7.png"></span>
+ </p>
+<p>
+ This form is more convenient for calculating lgamma, but for the gamma function
+ the division by <span class="emphasis"><em>e</em></span> turns a possibly exact quality into
+ an inexact value: this reduces accuracy in the common case that the input is
+ exact, and so isn't used for the gamma function.
+ </p>
+<h5>
+<a name="math_toolkit.lanczos.h4"></a>
+ <span class="phrase"><a name="math_toolkit.lanczos.references"></a></span><a class="link" href="lanczos.html#math_toolkit.lanczos.references">References</a>
+ </h5>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ <a name="godfrey"></a>Paul Godfrey, <a href="http://my.fit.edu/~gabdo/gamma.txt" target="_top">"A
+ note on the computation of the convergent Lanczos complex Gamma approximation"</a>.
+ </li>
+<li class="listitem">
+ <a name="pugh"></a>Glendon Ralph Pugh, <a href="http://bh0.physics.ubc.ca/People/matt/Doc/ThesesOthers/Phd/pugh.pdf" target="_top">"An
+ Analysis of the Lanczos Gamma Approximation"</a>, PhD Thesis November
+ 2004.
+ </li>
+<li class="listitem">
+ Viktor T. Toth, <a href="http://www.rskey.org/gamma.htm" target="_top">"Calculators
+ and the Gamma Function"</a>.
+ </li>
+<li class="listitem">
+ Mathworld, <a href="http://mathworld.wolfram.com/LanczosApproximation.html" target="_top">The
+ Lanczos Approximation</a>.
+ </li>
+</ol></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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="relative_error.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="remez.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/lcm_function_object.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/lcm_function_object.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>LCM Function Object</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="gcd_function_object.html" title="GCD Function Object">
+<link rel="next" href="run_time.html" title="Run-time GCD & LCM Determination">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="gcd_function_object.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="run_time.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_lcm_function_object">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.lcm_function_object"></a><a class="link" href="lcm_function_object.html" title="LCM Function Object">LCM Function Object</a>
+</h2></div></div></div>
+<p>
+ <span class="bold"><strong>Header: </strong></span> <boost/math/common_factor_rt.hpp>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">IntegerType</span> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lcm_evaluator</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// Types</span>
+ <span class="keyword">typedef</span> <span class="identifier">IntegerType</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">IntegerType</span> <span class="identifier">first_argument_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">IntegerType</span> <span class="identifier">second_argument_type</span><span class="special">;</span>
+
+ <span class="comment">// Function object interface</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span> <span class="special">()(</span> <span class="identifier">first_argument_type</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">second_argument_type</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">b</span> <span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The boost::math::lcm_evaluator class template defines a function object class
+ to return the least common multiple of two integers. The template is parameterized
+ by a single type, called IntegerType here. This type should be a numeric type
+ that represents integers. The result of the function object is always nonnegative,
+ even if either of the operator arguments is negative. If the least common multiple
+ is beyond the range of the integer type, the results are undefined.
+ </p>
+<p>
+ This function object class template is used in the corresponding version of
+ the LCM function template. If a numeric type wants to customize evaluations
+ of its least common multiples, then the type should specialize on the lcm_evaluator
+ class template.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="gcd_function_object.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="run_time.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/main_faq.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/main_faq.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,217 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Frequently Asked Questions FAQ</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="overview_tr1.html" title="C99 and C++ TR1 C-style Functions">
+<link rel="next" href="contact.html" title="Contact Info and Support">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="overview_tr1.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="contact.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_main_faq">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.main_faq"></a><a class="link" href="main_faq.html" title="Frequently Asked Questions FAQ">Frequently Asked Questions FAQ</a>
+</h2></div></div></div>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ <span class="emphasis"><em>I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user and I don't
+ see where the functions like dnorm(mean, sd) are in Boost.Math?</em></span>
+ <br> Nearly all are provided, and many more like mean, skewness, quantiles,
+ complements ... but Boost.Math makes full use of C++, and it looks a bit
+ different. But do not panic! See section on construction and the many examples.
+ Briefly, the distribution is constructed with the parameters (like location
+ and scale) (things after the | in representation like P(X=k|n, p) or ;
+ in a common represention of pdf f(x; μσ<sup>2</sup>). Functions like pdf, cdf are called
+ with the name of that distribution and the random variate often called
+ x or k. For example, <code class="computeroutput"><span class="identifier">normal</span> <span class="identifier">my_norm</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">my_norm</span><span class="special">,</span> <span class="number">2.0</span><span class="special">);</span></code>
+ <br>
+ </li>
+<li class="listitem">
+ I'm a user of <a href="http://support.sas.com/rnd/app/da/new/probabilityfunctions.html" target="_top">New
+ SAS Functions for Computing Probabilities</a>. <br> You will find
+ the interface more familar, but to be able to select a distribution (perhaps
+ using a string) see the Extras/Future Directions section, and /boost/libs/math/dot_net_example/boost_math.cpp
+ for an example that is used to create a C# utility (that you might also
+ find useful): see <a href="http://sourceforge.net/projects/distexplorer/" target="_top">Statistical
+ Distribution Explorer</a> <br> .
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I'm allegic to reading manuals and prefer to learn from examples.</em></span><br>
+ Fear not - you are not alone! Many examples are available for functions
+ and distributions. Some are referenced directly from the text. Others can
+ be found at \boost_latest_release\libs\math\example. If you are a Visual
+ Studio user, you should be able to create projects from each of these,
+ making sure that the Boost library is in the include directories list.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>How do I make sure that the Boost library is in the Visual Studio
+ include directories list?</em></span><br> You can add an include path,
+ for example, your Boost place /boost-latest_release, for example <code class="computeroutput"><span class="identifier">X</span><span class="special">:/</span><span class="identifier">boost_1_45_0</span><span class="special">/</span></code> if you have a separate partition X for
+ Boost releases. Or you can use an environment variable BOOST_ROOT set to
+ your Boost place, and include that. Visual Studio before 2010 provided
+ Tools, Options, VC++ Directories to control directories: Visual Studio
+ 2010 instead provides property sheets to assist. You may find it convenient
+ to create a new one adding \boost-latest_release; to the existing include
+ items in $(IncludePath).
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user and I don't
+ see where the properties like mean, median, mode, variance, skewness of
+ distributions are in Boost.Math?</em></span><br> They are all available
+ (if defined for the parameters with which you constructed the distribution)
+ via <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution
+ Function</a>, <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability
+ Density Function</a>, <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>,
+ <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>,
+ <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
+ <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
+ <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
+ <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
+ <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
+ <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="dist_ref/nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I am a C programmer. Can I user Boost.Math with C?</em></span><br>
+ Yes you can, including all the special functions, and TR1 functions like
+ isnan. They appear as C functions, by being declared as "extern C".
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I am a C# (Basic? F# FORTRAN? Other CLI?) programmer. Can I use
+ Boost.Math with C#?</em></span> <br> Yes you can, including all the special
+ functions, and TR1 functions like isnan. But you <span class="bold"><strong>must
+ build the Boost.Math as a dynamic library (.dll) and compile with the /CLI
+ option</strong></span>. See the boost/math/dot_net_example folder which contains
+ an example that builds a simple statistical distribution app with a GUI.
+ See <a href="http://sourceforge.net/projects/distexplorer/" target="_top">Statistical
+ Distribution Explorer</a> <br>
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>What these "policies" things for?</em></span> <br>
+ Policies are a powerful (if necessarily complex) fine-grain mechanism that
+ allow you to customise the behaviour of the Boost.Math library according
+ to your precise needs. See <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policies</a>. But
+ if, very probably, the default behaviour suits you, you don't need to know
+ more.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I am a C user and expect to see global C-style<code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> set for overflow/errors etc?</em></span>
+ <br> You can achieve what you want - see <a class="link" href="pol_ref/error_handling_policies.html" title="Error Handling Policies">error
+ handling policies</a> and <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">user
+ error handling</a> and many examples.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I am a C user and expect to silently return a max value for overflow?</em></span>
+ <br> You (and C++ users too) can return whatever you want on overflow
+ - see <a class="link" href="error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ and <a class="link" href="pol_ref/error_handling_policies.html" title="Error Handling Policies">error
+ handling policies</a> and several examples.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I don't want any error message for overflow etc?</em></span>
+ <br> You can control exactly what happens for all the abnormal conditions,
+ including the values returned. See <a class="link" href="error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>,
+ <a class="link" href="error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ <a class="link" href="pol_ref/error_handling_policies.html" title="Error Handling Policies">error handling
+ policies</a> <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">user
+ error handling</a> etc and examples.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>My environment doesn't allow and/or I don't want exceptions.
+ Can I still user Boost.Math?</em></span> <br> Yes but you must customise
+ the error handling: see <a class="link" href="pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">user
+ error handling</a> and <a class="link" href="pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults">changing
+ policies defaults</a> .
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>The docs are several hundreds of pages long! Can I read the docs
+ off-line or on paper?</em></span> <br> Yes - you can download the Boost
+ current release of most documentation as a zip of pdfs (including Boost.Math)
+ from Sourceforge, for example https://sourceforge.net/projects/boost/files/boost-docs/1.45.0/boost_pdf_1_45_0.tar.gz/download.
+ And you can print any pages you need (or even print all pages - but be
+ warned that there are several hundred!). Both html and pdf versions are
+ highly hyperlinked. The entire Boost.Math pdf can be searched with Adobe
+ Reader, Edit, Find ... This can often find what you seek, a partial substitute
+ for a full index.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I want a compact version for an embedded application. Can I use
+ float precision?</em></span> <br> Yes - by selecting RealType template
+ parameter as float: for example normal_distribution<float> your_normal(mean,
+ sd); (But double may still be used internally, so space saving may be less
+ that you hope for). You can also change the promotion policy, but accuracy
+ might be much reduced.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I seem to get somewhat different results compared to other programs.
+ Why?</em></span> We hope Boost.Math to be more accurate: our priority is
+ accuracy (over speed). See the section on accuracy. But for evaluations
+ that require iterations there are parameters which can change the required
+ accuracy. You might be able to squeeze a little more accuracy at the cost
+ of runtime.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>Will my program run more slowly compared to other math functions
+ and statistical libraries?</em></span> Probably, thought not always, and
+ not by too much: our priority is accuracy. For most functions, making sure
+ you have the latest compiler version with all optimisations switched on
+ is the key to speed. For evaluations that require iteration, you may be
+ able to gain a little more speed at the expense of accuracy. See detailed
+ suggestions and results on <a class="link" href="../perf.html" title="Chapter 14. Performance">performance</a>.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>How do I handle infinity and NaNs portably?</em></span> <br>
+ See <a class="link" href="fp_facets.html" title="Facets for Floating-Point Infinities and NaNs">nonfinite fp_facets</a> for
+ Facets for Floating-Point Infinities and NaNs.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>Where are the pre-built libraries?</em></span> <br> Good news
+ - you probably don't need any! - just <code class="computeroutput"><span class="preprocessor">#include</span>
+ <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span></code><span class="emphasis"><em>math/distribution_you_want></em></span>.
+ But in the unlikely event that you do, see <a class="link" href="building.html" title="If and How to Build a Boost.Math Library, and its Examples and Tests">building
+ libraries</a>.
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I don't see the function or distribution that I want.</em></span>
+ <br> You could try an email to ask the authors - but no promises!
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>I need more decimal digits for values/computations.</em></span>
+ <br> You can use Boost.Math with Boost.Multiprecision:
+ typically cpp_dec_float
+ is a useful user-defined type to provide a fixed number of decimal digits,
+ usually 50 or 100.
+ </li>
+<li class="listitem">
+ Why can't I write something really simple like <code class="computeroutput"><span class="identifier">cpp_int</span>
+ <span class="identifier">one</span><span class="special">(</span><span class="number">1</span><span class="special">);</span> <span class="identifier">cpp_dec_float_50</span>
+ <span class="identifier">two</span><span class="special">(</span><span class="number">2</span><span class="special">);</span> <span class="identifier">one</span>
+ <span class="special">*</span> <span class="identifier">two</span><span class="special">;</span></code> Because <code class="computeroutput"><span class="identifier">cpp_int</span></code>
+ might be bigger than <code class="computeroutput"><span class="identifier">cpp_dec_float</span>
+ <span class="identifier">can</span> <span class="identifier">hold</span></code>,
+ so you must make an <span class="bold"><strong>explicit</strong></span> conversion.
+ See <a href="http://svn.boost.org/svn/boost/trunk/libs/multiprecision/doc/html/boost_multiprecision/intro.html" target="_top">mixed
+ multiprecision arithmetic</a> and conversion.
+ </li>
+</ol></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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="overview_tr1.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="contact.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/main_intro.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/main_intro.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,125 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>About the Math Toolkit</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="../overview.html" title="Chapter 1. Overview">
+<link rel="next" href="navigation.html" title="Navigation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="navigation.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_main_intro">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.main_intro"></a><a class="link" href="main_intro.html" title="About the Math Toolkit">About the Math Toolkit</a>
+</h2></div></div></div>
+<p>
+ This library is divided into three interconnected parts:
+ </p>
+<h5>
+<a name="math_toolkit.main_intro.h0"></a>
+ <span class="phrase"><a name="math_toolkit.main_intro.statistical_distributions"></a></span><a class="link" href="main_intro.html#math_toolkit.main_intro.statistical_distributions">Statistical
+ Distributions</a>
+ </h5>
+<p>
+ Provides a reasonably comprehensive set of <a class="link" href="../dist.html" title="Chapter 2. Statistical Distributions and Functions">statistical
+ distributions</a>, upon which higher level statistical tests can be built.
+ </p>
+<p>
+ The initial focus is on the central <a href="http://en.wikipedia.org/wiki/Univariate" target="_top">univariate
+ </a> distributions.
+ Both continuous
+ (like <a class="link" href="dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution">normal</a>
+ & <a class="link" href="dist_ref/dists/f_dist.html" title="F Distribution">Fisher</a>) and
+ discrete
+ (like <a class="link" href="dist_ref/dists/binomial_dist.html" title="Binomial Distribution">binomial</a>
+ & <a class="link" href="dist_ref/dists/poisson_dist.html" title="Poisson Distribution">Poisson</a>)
+ distributions are provided.
+ </p>
+<p>
+ A <a class="link" href="stat_tut.html" title="Statistical Distributions Tutorial">comprehensive tutorial is provided</a>,
+ along with a series of <a class="link" href="stat_tut/weg.html" title="Worked Examples">worked examples</a>
+ illustrating how the library is used to conduct statistical tests.
+ </p>
+<h5>
+<a name="math_toolkit.main_intro.h1"></a>
+ <span class="phrase"><a name="math_toolkit.main_intro.mathematical_special_functions"></a></span><a class="link" href="main_intro.html#math_toolkit.main_intro.mathematical_special_functions">Mathematical
+ Special Functions</a>
+ </h5>
+<p>
+ Provides a small number of high quality <a class="link" href="../special.html" title="Chapter 3. Special Functions">special functions</a>,
+ initially these were concentrated on functions used in statistical applications
+ along with those in the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Technical
+ Report on C++ Library Extensions</a>.
+ </p>
+<p>
+ The function families currently implemented are the gamma, beta & erf functions
+ along with the incomplete gamma and beta functions (four variants of each)
+ and all the possible inverses of these, plus digamma, various factorial functions,
+ Bessel functions, elliptic integrals, sinus cardinals (along with their hyperbolic
+ variants), inverse hyperbolic functions, Legrendre/Laguerre/Hermite polynomials
+ and various special power and logarithmic functions.
+ </p>
+<p>
+ All the implementations are fully generic and support the use of arbitrary
+ "real-number" types, including Boost.Multiprecision,
+ although they are optimised for use with types with known-about <a href="http://en.wikipedia.org/wiki/Significand" target="_top">significand
+ (or mantissa)</a> sizes: typically <code class="computeroutput"><span class="keyword">float</span></code>,
+ <code class="computeroutput"><span class="keyword">double</span></code> or <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.main_intro.h2"></a>
+ <span class="phrase"><a name="math_toolkit.main_intro.implementation_toolkit"></a></span><a class="link" href="main_intro.html#math_toolkit.main_intro.implementation_toolkit">Implementation
+ Toolkit</a>
+ </h5>
+<p>
+ Provides <a class="link" href="../toolkit.html" title="Chapter 11. Internals (Series, Rationals and Continued Fractions, Root Finding, Function Minimization, Testing and Development Tools)">many of the tools</a> required to implement
+ mathematical special functions: hopefully the presence of these will encourage
+ other authors to contribute more special function implementations in the future.
+ These tools are currently considered experimental: they are "exposed implementation
+ details" whose interfaces and/or implementations may change.
+ </p>
+<p>
+ There are helpers for the <a class="link" href="internals1/series_evaluation.html" title="Series Evaluation">evaluation
+ of infinite series</a>, <a class="link" href="internals1/cf.html" title="Continued Fraction Evaluation">continued
+ fractions</a> and <a class="link" href="internals1/rational.html" title="Polynomial and Rational Function Evaluation">rational
+ approximations</a>.
+ </p>
+<p>
+ There is a fairly comprehensive set of root finding and <a class="link" href="internals1/minima.html" title="Locating Function Minima: Brent's algorithm">function
+ minimisation algorithms</a>: the root finding algorithms are both <a class="link" href="internals1/roots.html" title="Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder">with</a> and <a class="link" href="internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748">without</a>
+ derivative support.
+ </p>
+<p>
+ A <a class="link" href="internals2/minimax.html" title="Minimax Approximations and the Remez Algorithm">Remez algorithm implementation</a>
+ allows for the locating of minimax rational approximations.
+ </p>
+<p>
+ There are also (experimental) classes for the <a class="link" href="internals2/polynomials.html" title="Polynomials">manipulation
+ of polynomials</a>, for <a class="link" href="internals2/error_test.html" title="Relative Error and Testing">testing
+ a special function against tabulated test data</a>, and for the <a class="link" href="internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions">rapid
+ generation of test data</a> and/or data for output to an external graphing
+ application.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="navigation.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/main_tr1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/main_tr1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,607 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>C99 and TR1 C Functions Overview</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../extern_c.html" title='Chapter 5. TR1 and C99 external "C" Functions'>
+<link rel="prev" href="../extern_c.html" title='Chapter 5. TR1 and C99 external "C" Functions'>
+<link rel="next" href="c99.html" title="C99 C Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../extern_c.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../extern_c.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="c99.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_main_tr1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.main_tr1"></a><a class="link" href="main_tr1.html" title="C99 and TR1 C Functions Overview">C99 and TR1 C Functions Overview</a>
+</h2></div></div></div>
+<p>
+ Many of the special functions included in this library are also a part of the
+ either the <a href="http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf" target="_top">C99
+ Standard ISO/IEC 9899:1999</a> or the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Technical
+ Report on C++ Library Extensions</a>. Therefore this library includes a
+ thin wrapper header <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">.</span><span class="identifier">hpp</span></code> that
+ provides compatibility with these two standards.
+ </p>
+<p>
+ There are various pros and cons to using the library in this way:
+ </p>
+<p>
+ Pros:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The header to include is lightweight (i.e. fast to compile).
+ </li>
+<li class="listitem">
+ The functions have extern "C" linkage, and so are usable from
+ other languages (not just C and C++).
+ </li>
+<li class="listitem">
+ C99 and C++ TR1 Standard compatibility.
+ </li>
+</ul></div>
+<p>
+ Cons:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ You will need to compile and link to the external Boost.Math libraries.
+ </li>
+<li class="listitem">
+ Limited to support for the 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>.
+ </li>
+<li class="listitem">
+ Error handling is handled via setting ::errno and returning NaN's and infinities:
+ this may be less flexible than an C++ exception based approach.
+ </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The separate libraries are required <span class="bold"><strong>only</strong></span>
+ if you choose to use boost/math/tr1.hpp rather than some other Boost.Math
+ header, the rest of Boost.Math remains header-only.
+ </p></td></tr>
+</table></div>
+<p>
+ The separate libraries required in order to use tr1.hpp can be compiled using
+ bjam from within the libs/math/build directory, or from the Boost root directory
+ using the usual Boost-wide install procedure. Alternatively the source files
+ are located in libs/math/src and each have the same name as the function they
+ implement. The various libraries are named as follows:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Functions
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ boost_math_c99f-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ float
+ </p>
+ </td>
+<td>
+ <p>
+ C99 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_c99-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ double
+ </p>
+ </td>
+<td>
+ <p>
+ C99 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_c99l-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ long double
+ </p>
+ </td>
+<td>
+ <p>
+ C99 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_tr1f-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ float
+ </p>
+ </td>
+<td>
+ <p>
+ TR1 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_tr1-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ double
+ </p>
+ </td>
+<td>
+ <p>
+ TR1 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_tr1l-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ long double
+ </p>
+ </td>
+<td>
+ <p>
+ TR1 Functions
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Where <code class="computeroutput"><span class="special"><</span><span class="identifier">suffix</span><span class="special">></span></code> encodes the compiler and build options
+ used to build the libraries: for example "libboost_math_tr1-vc80-mt-gd.lib"
+ would be the statically linked TR1 library to use with Visual C++ 8.0, in multithreading
+ debug mode, with the DLL VC++ runtime, where as "boost_math_tr1-vc80-mt.lib"
+ would be import library for the TR1 DLL to be used with Visual C++ 8.0 with
+ the release multithreaded DLL VC++ runtime. Refer to the getting started guide
+ for a <a href="http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html#library-naming" target="_top">full
+ explanation of the <code class="computeroutput"><span class="special"><</span><span class="identifier">suffix</span><span class="special">></span></code> meanings</a>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ Visual C++ users will typically have the correct library variant to link
+ against selected for them by boost/math/tr1.hpp based on your compiler settings.
+ </p>
+<p>
+ Users will need to define BOOST_MATH_TR1_DYN_LINK when building their code
+ if they want to link against the DLL versions of these libraries rather than
+ the static versions.
+ </p>
+<p>
+ Users can disable auto-linking by defining BOOST_MATH_TR1_NO_LIB when building:
+ this is typically only used when linking against a customised build of the
+ libraries.
+ </p>
+</td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Linux and Unix users will generally only have one variant of these libraries
+ installed, and can generally just link against -lboost_math_tr1 etc.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.main_tr1.h0"></a>
+ <span class="phrase"><a name="math_toolkit.main_tr1.usage_recomendations"></a></span><a class="link" href="main_tr1.html#math_toolkit.main_tr1.usage_recomendations">Usage
+ Recomendations</a>
+ </h5>
+<p>
+ This library now presents the user with a choice:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ To include the header only versions of the functions and have an easier
+ time linking, but a longer compile time.
+ </li>
+<li class="listitem">
+ To include the TR1 headers and link against an external library.
+ </li>
+</ul></div>
+<p>
+ Which option you choose depends largely on how you prefer to work and how your
+ system is set up.
+ </p>
+<p>
+ For example a casual user who just needs the acosh function, would probably
+ be better off including <code class="computeroutput"><span class="special"><</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">acosh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> and using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">acosh</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code> in their code.
+ </p>
+<p>
+ However, for large scale software development where compile times are significant,
+ and where the Boost libraries are already built and installed on the system,
+ then including <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> and using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">acosh</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>
+ will speed up compile times, reduce object files sizes (since there are no
+ templates being instantiated any more), and also speed up debugging runtimes
+ - since the externally compiled libraries can be compiler optimised, rather
+ than built using full settings - the difference in performance between <a class="link" href="getting_best.html" title="Getting the Best Performance from this Library">release and debug builds can be as much
+ as 20 times</a>, so for complex applications this can be a big win.
+ </p>
+<h5>
+<a name="math_toolkit.main_tr1.h1"></a>
+ <span class="phrase"><a name="math_toolkit.main_tr1.supported_c99_functions"></a></span><a class="link" href="main_tr1.html#math_toolkit.main_tr1.supported_c99_functions">Supported
+ C99 Functions</a>
+ </h5>
+<p>
+ See also the <a class="link" href="c99.html" title="C99 C Functions">quick reference guide for these
+ functions</a>.
+ </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">namespace</span> <span class="identifier">tr1</span><span class="special">{</span> <span class="keyword">extern</span> <span class="string">"C"</span><span class="special">{</span>
+
+<span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">float_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">double_t</span><span class="special">;</span>
+
+<span class="keyword">double</span> <span class="identifier">acosh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">acoshf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">acoshl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">asinh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">asinhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">asinhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">atanh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">atanhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">atanhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">cbrt</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cbrtf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cbrtl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">copysign</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">copysignf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">copysignl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">erf</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">erff</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">erfc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">erfcf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfcl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">expm1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">expm1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expm1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fmax</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fmaxf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fmaxl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fmin</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fminf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fminl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">hypot</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hypotf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypotl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">lgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">lgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">lgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">log1p</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">log1pf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">log1pl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="identifier">lround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nextafter</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nextafterf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nextafterl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nexttoward</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nexttowardf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nexttowardl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">round</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">roundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">roundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">tgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">tgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">trunc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">truncf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">truncl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="special">}}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.main_tr1.h2"></a>
+ <span class="phrase"><a name="math_toolkit.main_tr1.supported_tr1_functions"></a></span><a class="link" href="main_tr1.html#math_toolkit.main_tr1.supported_tr1_functions">Supported
+ TR1 Functions</a>
+ </h5>
+<p>
+ See also the <a class="link" href="main_tr1.html" title="C99 and TR1 C Functions Overview">quick reference guide for
+ these functions</a>.
+ </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">namespace</span> <span class="identifier">tr1</span><span class="special">{</span> <span class="keyword">extern</span> <span class="string">"C"</span><span class="special">{</span>
+
+<span class="comment">// [5.2.1.1] associated Laguerre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">assoc_laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">assoc_laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.2] associated Legendre functions:</span>
+<span class="keyword">double</span> <span class="identifier">assoc_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">assoc_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.3] beta function:</span>
+<span class="keyword">double</span> <span class="identifier">beta</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">betaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">betal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.4] (complete) elliptic integral of the first kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.5] (complete) elliptic integral of the second kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.6] (complete) elliptic integral of the third kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.8] regular modified cylindrical Bessel functions:</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_i</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_if</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_il</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.9] cylindrical Bessel functions (of the first kind):</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_jf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_jl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.10] irregular modified cylindrical Bessel functions:</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_k</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_kf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_kl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.11] cylindrical Neumann functions;</span>
+<span class="comment">// cylindrical Bessel functions (of the second kind):</span>
+<span class="keyword">double</span> <span class="identifier">cyl_neumann</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_neumannf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_neumannl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.12] (incomplete) elliptic integral of the first kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.13] (incomplete) elliptic integral of the second kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.14] (incomplete) elliptic integral of the third kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.15] exponential integral:</span>
+<span class="keyword">double</span> <span class="identifier">expint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">expintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.16] Hermite polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">hermite</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hermitef</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hermitel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.18] Laguerre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.19] Legendre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.20] Riemann zeta function:</span>
+<span class="keyword">double</span> <span class="identifier">riemann_zeta</span><span class="special">(</span><span class="keyword">double</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">riemann_zetaf</span><span class="special">(</span><span class="keyword">float</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">riemann_zetal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.21] spherical Bessel functions (of the first kind):</span>
+<span class="keyword">double</span> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_besself</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_bessell</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.22] spherical associated Legendre functions:</span>
+<span class="keyword">double</span> <span class="identifier">sph_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">theta</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.23] spherical Neumann functions;</span>
+<span class="comment">// spherical Bessel functions (of the second kind):</span>
+<span class="keyword">double</span> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_neumannf</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_neumannl</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="special">}}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ In addition sufficient additional overloads of the <code class="computeroutput"><span class="keyword">double</span></code>
+ versions of the above functions are provided, so that calling the function
+ with any mixture of <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code>, <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>, or <span class="emphasis"><em>integer</em></span>
+ arguments is supported, with the return type determined by the <a class="link" href="result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>.
+ </p>
+<h5>
+<a name="math_toolkit.main_tr1.h3"></a>
+ <span class="phrase"><a name="math_toolkit.main_tr1.currently_unsupported_c99_functi"></a></span><a class="link" href="main_tr1.html#math_toolkit.main_tr1.currently_unsupported_c99_functi">Currently
+ Unsupported C99 Functions</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">exp2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">exp2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">exp2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fdim</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fdimf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fdiml</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">z</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fmaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">z</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fmal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">int</span> <span class="identifier">ilogb</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">int</span> <span class="identifier">ilogbf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">int</span> <span class="identifier">ilogbl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">log2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">log2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">log2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">logb</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">logbf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">logbl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="identifier">lrint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lrintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lrintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nan</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nanf</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nanl</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nearbyint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nearbyintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nearbyintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">remainder</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">remainderf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">remainderl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">remquo</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">remquof</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">remquol</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">rint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">rintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">rintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">scalbln</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">scalblnf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">scalblnl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">scalbn</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">scalbnf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">scalbnl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span>
+</pre>
+<h5>
+<a name="math_toolkit.main_tr1.h4"></a>
+ <span class="phrase"><a name="math_toolkit.main_tr1.currently_unsupported_tr1_functi"></a></span><a class="link" href="main_tr1.html#math_toolkit.main_tr1.currently_unsupported_tr1_functi">Currently
+ Unsupported TR1 Functions</a>
+ </h5>
+<pre class="programlisting"><span class="comment">// [5.2.1.7] confluent hypergeometric functions:</span>
+<span class="keyword">double</span> <span class="identifier">conf_hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">conf_hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">conf_hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.17] hypergeometric functions:</span>
+<span class="keyword">double</span> <span class="identifier">hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../extern_c.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../extern_c.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="c99.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/mem_typedef.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/mem_typedef.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quaternion Member Typedefs</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="spec.html" title="Quaternion Specializations">
+<link rel="next" href="quat_mem_fun.html" title="Quaternion Member Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="spec.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_mem_fun.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_mem_typedef">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.mem_typedef"></a><a class="link" href="mem_typedef.html" title="Quaternion Member Typedefs">Quaternion Member Typedefs</a>
+</h2></div></div></div>
+<p>
+ <span class="bold"><strong>value_type</strong></span>
+ </p>
+<p>
+ Template version:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Float specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Double specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Long double specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ These provide easy acces to the type the template is built upon.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="spec.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_mem_fun.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/namespaces.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/namespaces.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,87 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Namespaces</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="directories.html" title="Directory and File Structure">
+<link rel="next" href="result_type.html" title="Calculation of the Type of the Result">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="directories.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="result_type.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_namespaces">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.namespaces"></a><a class="link" href="namespaces.html" title="Namespaces">Namespaces</a>
+</h2></div></div></div>
+<p>
+ All math functions and distributions are in <code class="computeroutput"><span class="keyword">namespace</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span></code>
+ </p>
+<p>
+ So, for example, the Students-t distribution template in <code class="computeroutput"><span class="keyword">namespace</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span></code> is
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">students_t_distribution</span>
+</pre>
+<p>
+ and can be instantiated with the help of the reserved name <code class="computeroutput"><span class="identifier">students_t</span></code>(for
+ <code class="computeroutput"><span class="identifier">RealType</span> <span class="keyword">double</span></code>)
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">students_t_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">students_t</span><span class="special">;</span>
+
+<span class="identifier">student_t</span> <span class="identifier">mydist</span><span class="special">(</span><span class="number">10</span><span class="special">);</span>
+</pre>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Some distribution names are also used in std random library, so to avoid
+ the risk of ambiguity it is better to make explicit using declarations, for
+ example: <code class="computeroutput"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">students_t_distribution</span></code>
+ </p></td></tr>
+</table></div>
+<p>
+ Functions not intended for use by applications are in <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">detail</span></code>.
+ </p>
+<p>
+ Functions that may have more general use, like <code class="computeroutput"><span class="identifier">digits</span></code>
+ (significand), <code class="computeroutput"><span class="identifier">max_value</span></code>,
+ <code class="computeroutput"><span class="identifier">min_value</span></code> and <code class="computeroutput"><span class="identifier">epsilon</span></code> are in <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span></code>.
+ </p>
+<p>
+ <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a> and configuration information is in namespace
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span></code>.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Many code snippets assume implicit namespace(s), for example, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code> or
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span></code>.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="directories.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="result_type.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/navigation.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/navigation.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,94 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Navigation</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="main_intro.html" title="About the Math Toolkit">
+<link rel="next" href="conventions.html" title="Document Conventions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="main_intro.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="conventions.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_navigation">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.navigation"></a><a class="link" href="navigation.html" title="Navigation">Navigation</a>
+</h2></div></div></div>
+<p>
+ <a class="indexterm" name="id860896"></a>
+ </p>
+<p>
+ Boost.Math documentation is provided in both HTML and PDF formats.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <span class="bold"><strong>Tutorials</strong></span> are listed in the <span class="emphasis"><em>Table
+ of Contents</em></span> and include many examples that should help you get
+ started quickly.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Source code</strong></span> of the many <span class="emphasis"><em>Examples</em></span>
+ will often be your quickest starting point.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Index</strong></span> (general) includes all entries.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Specific Indexes</strong></span> list only functions,
+ class signatures, macros and typedefs.
+ </li>
+</ul></div>
+<h6>
+<a name="math_toolkit.navigation.h0"></a>
+ <span class="phrase"><a name="math_toolkit.navigation.using_the_indexes"></a></span><a class="link" href="navigation.html#math_toolkit.navigation.using_the_indexes">Using
+ the Indexes</a>
+ </h6>
+<p>
+ The main index will usually help, especially if you know a word describing
+ what it does, without needing to know the exact name chosen for the function.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ When using the index, keep in mind that clicking on an index term only takes
+ you to the <span class="bold"><strong>section</strong></span> containing the index
+ entry. This section may be several pages long, so you may need to use the
+ <span class="bold"><strong>find</strong></span> facility of your browser or PDF reader
+ to get to the index term itself.
+ </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="../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ A PDF reader usually allows a <span class="bold"><strong>global</strong></span> find;
+ this can be really useful if the term you expect to be indexed is not the
+ one chosen by the authors. You might find searching the PDF version and viewing
+ the HTML version will locate an elusive item.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="main_intro.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="conventions.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/new_const.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/new_const.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,250 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Defining New Constants</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../constants.html" title="Chapter 6. Mathematical Constants">
+<link rel="prev" href="constants.html" title="The Mathematical Constants">
+<link rel="next" href="constants_faq.html" title="FAQs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="constants.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="constants_faq.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_new_const">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.new_const"></a><a class="link" href="new_const.html" title="Defining New Constants">Defining New Constants</a>
+</h2></div></div></div>
+<p>
+ The library provides some helper code to assist in defining new constants;
+ the process for defining a constant called <code class="computeroutput"><span class="identifier">my_constant</span></code>
+ goes like this:
+ </p>
+<p>
+ 1. <span class="bold"><strong>Define a function that calculates the value of the
+ constant</strong></span>. This should be a template function, and be placed in
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">calculate_constants</span><span class="special">.</span><span class="identifier">hpp</span></code> if the
+ constant is to be added to this library, or else defined at the top of your
+ source file if not.
+ </p>
+<p>
+ The function should look like this:
+ </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">namespace</span> <span class="identifier">constants</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">detail</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">></span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">Real</span> <span class="identifier">constant_my_constant</span><span class="special"><</span><span class="identifier">Real</span><span class="special">>::</span><span class="identifier">compute</span><span class="special">(</span><span class="identifier">BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC</span><span class="special">(</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">N</span><span class="special">>))</span>
+<span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">required_precision</span> <span class="special">=</span> <span class="identifier">N</span> <span class="special">?</span> <span class="identifier">N</span> <span class="special">:</span> <span class="identifier">tools</span><span class="special">::</span><span class="identifier">digits</span><span class="special"><</span><span class="identifier">Real</span><span class="special">>();</span>
+ <span class="identifier">Real</span> <span class="identifier">result</span> <span class="special">=</span> <span class="comment">/* value computed to required_precision bits */</span> <span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="special">}}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Then define a placeholder for the constant itself:
+ </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">namespace</span> <span class="identifier">constants</span><span class="special">{</span>
+
+<span class="identifier">BOOST_DEFINE_MATH_CONSTANT</span><span class="special">(</span><span class="identifier">my_constant</span><span class="special">,</span> <span class="number">0.0</span><span class="special">,</span> <span class="string">"0"</span><span class="special">);</span>
+
+<span class="special">}}}</span>
+</pre>
+<p>
+ For example, to calculate π/2, add to <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">calculate_constants</span><span class="special">.</span><span class="identifier">hpp</span></code>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">constant_half_pi</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">compute</span><span class="special">(</span><span class="identifier">BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC</span><span class="special">(</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">N</span><span class="special">>))</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MATH_STD_USING</span>
+ <span class="keyword">return</span> <span class="identifier">pi</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">digits2</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="special">></span> <span class="special">>()</span> <span class="special">/</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="number">2</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Then to <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span></code> add:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_DEFINE_MATH_CONSTANT</span><span class="special">(</span><span class="identifier">half_pi</span><span class="special">,</span> <span class="number">0.0</span><span class="special">,</span> <span class="string">"0"</span><span class="special">);</span> <span class="comment">// Actual values are temporary, we'll replace them later.</span>
+</pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Previously defined constants like pi and e can be used, but by <span class="bold"><strong>not simply calling</strong></span> <code class="computeroutput"><span class="identifier">pi</span><span class="special"><</span><span class="identifier">T</span><span class="special">>()</span></code>;
+ specifying the precision via the policy <code class="computeroutput"><span class="identifier">pi</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span>
+ <span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">digits2</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="special">></span> <span class="special">>()</span></code>
+ is essential to ensure full accuracy.
+ </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="../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ Newly defined constants can only be used once they are included in <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span></code>. So
+ if you add <code class="computeroutput"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">N</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">constant_my_constant</span><span class="special">{...}</span></code>,
+ then you cannot define <code class="computeroutput"><span class="identifier">constant_my_constant</span></code>
+ until you add the temporary <code class="computeroutput"><span class="identifier">BOOST_DEFINE_MATH_CONSTANT</span><span class="special">(</span><span class="identifier">my_constant</span><span class="special">,</span> <span class="number">0.0</span><span class="special">,</span>
+ <span class="string">"0"</span><span class="special">)</span></code>.
+ Failing to do this will result in surprising compile errors:
+ </p>
+<pre class="programlisting"><span class="identifier">error</span> <span class="identifier">C2143</span><span class="special">:</span> <span class="identifier">syntax</span> <span class="identifier">error</span> <span class="special">:</span> <span class="identifier">missing</span> <span class="char">';'</span> <span class="identifier">before</span> <span class="char">'<'</span>
+<span class="identifier">error</span> <span class="identifier">C2433</span><span class="special">:</span> <span class="char">'constant_root_two_div_pi'</span> <span class="special">:</span> <span class="char">'inline'</span> <span class="keyword">not</span> <span class="identifier">permitted</span> <span class="identifier">on</span> <span class="identifier">data</span> <span class="identifier">declarations</span>
+<span class="identifier">error</span> <span class="identifier">C2888</span><span class="special">:</span> <span class="char">'T constant_root_two_div_pi'</span> <span class="special">:</span> <span class="identifier">symbol</span> <span class="identifier">cannot</span> <span class="identifier">be</span> <span class="identifier">defined</span> <span class="identifier">within</span> <span class="keyword">namespace</span> <span class="char">'detail'</span>
+<span class="identifier">error</span> <span class="identifier">C2988</span><span class="special">:</span> <span class="identifier">unrecognizable</span> <span class="keyword">template</span> <span class="identifier">declaration</span><span class="special">/</span><span class="identifier">definition</span>
+</pre>
+</td></tr>
+</table></div>
+<p>
+ 2. <span class="bold"><strong>You will need an arbitrary precision type to use to
+ calculate the value</strong></span>. This library currently supports either <code class="computeroutput"><span class="identifier">cpp_float</span></code>, <code class="computeroutput"><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span></code> or
+ <code class="computeroutput"><span class="identifier">mpfr_class</span></code> used via the bindings
+ in <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">bindings</span></code>.
+ The default is to use <code class="computeroutput"><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span></code> unless you define an alternate macro,
+ for example, <code class="computeroutput"><span class="identifier">USE_MPFR</span></code> or <code class="computeroutput"><span class="identifier">USE_CPP_FLOAT</span></code> at the start of your program.
+ </p>
+<p>
+ 3. It is necessary to link to the Boost.Regex library, and probably to your
+ chosen arbitrary precision type library.
+ </p>
+<p>
+ 4. The complete program to generate the constant <code class="computeroutput"><span class="identifier">half_pi</span></code>
+ using function <code class="computeroutput"><span class="identifier">calculate_half_pi</span></code>
+ is then:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">USE_CPP_FLOAT</span> <span class="comment">// If required.</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">generate</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_CONSTANTS_GENERATE</span><span class="special">(</span><span class="identifier">half_pi</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The output from the program is a snippet of C++ code (actually a macro call)
+ that can be cut and pasted into <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span></code> or else into your own code, for example:
+ </p>
+<pre class="programlisting"> BOOST_DEFINE_MATH_CONSTANT(half_pi, 1.570796326794896619231321691639751442e+00, "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404326e+00");
+</pre>
+<p>
+ This macro BOOST_DEFINE_MATH_CONSTANT inserts a C++ struct code snippet that
+ declares the <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> versions of the constant, plus
+ a decimal digit string representation correct to 100 decimal digits, and all
+ the meta-programming machinery needed to select between them.
+ </p>
+<p>
+ The result of an expanded macro for Pi is shown below.
+ </p>
+<pre class="programlisting"><span class="comment">// Preprocessed pi constant, annotated.</span>
+
+<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">namespace</span> <span class="identifier">constants</span>
+ <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">detail</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">constant_pi</span>
+ <span class="special">{</span>
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="comment">// Default implementations from string of decimal digits:</span>
+ <span class="keyword">static</span> <span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">get_from_string</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">result</span>
+ <span class="special">=</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">convert_from_string</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="string">"3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651e+00"</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*,</span> <span class="identifier">T</span><span class="special">>());</span>
+ <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">compute</span><span class="special">();</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// Default implementations from string of decimal digits:</span>
+ <span class="keyword">static</span> <span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">construct_from_string</span><span class="special">>&)</span>
+ <span class="special">{</span>
+ <span class="identifier">constant_initializer</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="special">&</span> <span class="identifier">constant_pi</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">get_from_string</span> <span class="special">>::</span><span class="identifier">do_nothing</span><span class="special">();</span>
+ <span class="keyword">return</span> <span class="identifier">get_from_string</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="comment">// Float, double and long double versions:</span>
+ <span class="keyword">static</span> <span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">construct_from_float</span><span class="special">>)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="number">3.141592653589793238462643383279502884e+00F</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">static</span> <span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">construct_from_double</span><span class="special">>&)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="number">3.141592653589793238462643383279502884e+00</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">static</span> <span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">construct_from_long_double</span><span class="special">>&)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="number">3.141592653589793238462643383279502884e+00L</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="comment">// For very high precision that is nonetheless can be calculated at compile time:</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">n</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">constant_initializer2</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">,</span> <span class="special">&</span> <span class="identifier">constant_pi</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="keyword">template</span> <span class="identifier">compute</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="special">>::</span><span class="identifier">do_nothing</span><span class="special">();</span>
+ <span class="keyword">return</span> <span class="identifier">compute</span><span class="special"><</span><span class="identifier">N</span><span class="special">>();</span>
+ <span class="special">}</span>
+ <span class="comment">//For true arbitrary precision, which may well vary at runtime.</span>
+ <span class="keyword">static</span> <span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="number">0</span><span class="special">>&)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">tools</span><span class="special">::</span><span class="identifier">digits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>()</span> <span class="special">></span> <span class="identifier">max_string_digits</span> <span class="special">?</span> <span class="identifier">compute</span><span class="special"><</span><span class="number">0</span><span class="special">>()</span> <span class="special">:</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">construct_from_string</span><span class="special">>());</span>
+ <span class="special">}</span>
+ <span class="special">};</span> <span class="comment">// template <class T> struct constant_pi</span>
+ <span class="special">}</span> <span class="comment">// namespace detail</span>
+
+ <span class="comment">// The actual forwarding function (including policy to control precision).</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span> <span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">pi</span><span class="special">(</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">detail</span><span class="special">::</span> <span class="identifier">constant_pi</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">get</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">construction_traits</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Policy</span><span class="special">>::</span><span class="identifier">type</span><span class="special">());</span>
+ <span class="special">}</span>
+ <span class="comment">// The actual forwarding function (using default policy to control precision).</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">pi</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">pi</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><></span> <span class="special">>()</span>
+ <span class="special">}</span>
+ <span class="special">}</span> <span class="comment">// namespace constants</span>
+
+ <span class="comment">// Namespace specific versions, for the three built-in floats:</span>
+ <span class="keyword">namespace</span> <span class="identifier">float_constants</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">float</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="number">3.141592653589793238462643383279502884e+00F</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">namespace</span> <span class="identifier">double_constants</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="number">3.141592653589793238462643383279502884e+00</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">namespace</span> <span class="identifier">long_double_constants</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="number">3.141592653589793238462643383279502884e+00L</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">namespace</span> <span class="identifier">constants</span><span class="special">{;</span>
+ <span class="special">}</span> <span class="comment">// namespace constants</span>
+ <span class="special">}</span> <span class="comment">// namespace math</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="constants.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="constants_faq.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/next_float.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/next_float.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,73 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../utils.html" title="Chapter 4. Floating Point Utilities">
+<link rel="prev" href="fp_facets/rationale.html" title="Design Rationale">
+<link rel="next" href="next_float/nextafter.html" title="Finding the Next Representable Value in a Specific Direction (nextafter)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="fp_facets/rationale.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="next_float/nextafter.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_next_float">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.next_float"></a><a class="link" href="next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">Floating-Point Representation
+ Distance (ULP), and Finding Adjacent Floating-Point Values</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="next_float/nextafter.html">Finding the Next Representable
+ Value in a Specific Direction (nextafter)</a></span></dt>
+<dt><span class="section"><a href="next_float/float_next.html">Finding the Next
+ Greater Representable Value (float_next)</a></span></dt>
+<dt><span class="section"><a href="next_float/float_prior.html">Finding the Next
+ Smaller Representable Value (float_prior)</a></span></dt>
+<dt><span class="section"><a href="next_float/float_distance.html">Calculating the
+ Representation Distance Between Two Floating Point Values (ULP) float_distance</a></span></dt>
+<dt><span class="section"><a href="next_float/float_advance.html">Advancing a Floating
+ Point Value by a Specific Representation Distance (ULP) float_advance</a></span></dt>
+</dl></div>
+<p>
+ <a href="http://en.wikipedia.org/wiki/Unit_in_the_last_place" target="_top">Unit of Least
+ Precision or Unit in the Last Place</a> is the gap between two different,
+ but as close as possible, floating-point numbers.
+ </p>
+<p>
+ Most decimal values, for example 0.1, cannot be exactly represented as floating-point
+ values, but will be stored as the <a href="http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding" target="_top">closest
+ representable floating-point</a>.
+ </p>
+<p>
+ Functions are provided for finding adjacent greater and lesser floating-point
+ values, and estimating the number of gaps between any two floating-point values.
+ </p>
+<p>
+ The floating-point type FPT must have has a fixed number of bits in the representation.
+ The number of bits may set at runtime, but must be the same for all numbers.
+ For example, NTL::quad_float
+ type (fixed 128-bit representation) or NTL::RR
+ type (arbitrary but fixed decimal digits, default 150) but <span class="bold"><strong>not</strong></span>
+ a type that extends the representation to provide an exact representation for
+ any number, for example <a href="http://keithbriggs.info/xrc.html" target="_top">XRC eXact
+ Real in C</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="fp_facets/rationale.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="next_float/nextafter.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_advance.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_advance.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">
+<link rel="prev" href="float_distance.html" title="Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance">
+<link rel="next" href="../../extern_c.html" title='Chapter 5. TR1 and C99 external "C" Functions'>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="float_distance.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../extern_c.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_next_float_float_advance">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.next_float.float_advance"></a><a class="link" href="float_advance.html" title="Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance">Advancing a Floating
+ Point Value by a Specific Representation Distance (ULP) float_advance</a>
+</h3></div></div></div>
+<p>
+ Function float_advance advances a floating point number by a specified number
+ of ULP.
+ </p>
+<h5>
+<a name="math_toolkit.next_float.float_advance.h0"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.float_advance.synopsis"></a></span><a class="link" href="float_advance.html#math_toolkit.next_float.float_advance.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">next</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">FPT</span><span class="special">></span>
+<span class="identifier">FPT</span> <span class="identifier">float_advance</span><span class="special">(</span><span class="identifier">FPT</span> <span class="identifier">val</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">distance</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.next_float.float_advance.h1"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.float_advance.description_float_advance"></a></span><a class="link" href="float_advance.html#math_toolkit.next_float.float_advance.description_float_advance">Description
+ - float_advance</a>
+ </h5>
+<p>
+ Returns a floating point number <span class="emphasis"><em>r</em></span> such that <code class="computeroutput"><span class="identifier">float_distance</span><span class="special">(</span><span class="identifier">val</span><span class="special">,</span> <span class="identifier">r</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">distance</span></code>.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="float_distance.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../extern_c.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_distance.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_distance.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">
+<link rel="prev" href="float_prior.html" title="Finding the Next Smaller Representable Value (float_prior)">
+<link rel="next" href="float_advance.html" title="Advancing a Floating Point Value by a Specific Representation Distance (ULP) float_advance">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="float_prior.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float_advance.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_next_float_float_distance">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.next_float.float_distance"></a><a class="link" href="float_distance.html" title="Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance">Calculating the
+ Representation Distance Between Two Floating Point Values (ULP) float_distance</a>
+</h3></div></div></div>
+<p>
+ Function float_distance finds the number of gaps/bits/ULP between any two
+ floating-point values. If the significands of floating-point numbers are
+ viewed as integers, then their difference is the number of ULP/gaps/bits
+ different.
+ </p>
+<h5>
+<a name="math_toolkit.next_float.float_distance.h0"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.float_distance.synopsis"></a></span><a class="link" href="float_distance.html#math_toolkit.next_float.float_distance.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">next</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">FPT</span><span class="special">></span>
+<span class="identifier">FPT</span> <span class="identifier">float_distance</span><span class="special">(</span><span class="identifier">FPT</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">FPT</span> <span class="identifier">b</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.next_float.float_distance.h1"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.float_distance.description_float_distance"></a></span><a class="link" href="float_distance.html#math_toolkit.next_float.float_distance.description_float_distance">Description
+ - float_distance</a>
+ </h5>
+<p>
+ Returns the distance between <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span>:
+ the result is always a signed integer value (stored in floating-point type
+ FPT) representing the number of distinct representations between <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span>.
+ </p>
+<p>
+ Note that
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">float_distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></code>
+ always returns 0.
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">float_distance</span><span class="special">(</span><span class="identifier">float_next</span><span class="special">(</span><span class="identifier">a</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></code>
+ always returns -1.
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">float_distance</span><span class="special">(</span><span class="identifier">float_prior</span><span class="special">(</span><span class="identifier">a</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></code>
+ always returns 1.
+ </li>
+</ul></div>
+<p>
+ The function <code class="computeroutput"><span class="identifier">float_distance</span></code>
+ is equivalent to calculating the number of ULP (Units in the Last Place)
+ between <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span> except that it
+ returns a signed value indicating whether <code class="computeroutput"><span class="identifier">a</span>
+ <span class="special">></span> <span class="identifier">b</span></code>
+ or not.
+ </p>
+<p>
+ If the distance is too great then it may not be able to be represented as
+ an exact integer by type FPT, but in practice this is unlikely to be a issue.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="float_prior.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float_advance.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_next.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_next.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Finding the Next Greater Representable Value (float_next)</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">
+<link rel="prev" href="nextafter.html" title="Finding the Next Representable Value in a Specific Direction (nextafter)">
+<link rel="next" href="float_prior.html" title="Finding the Next Smaller Representable Value (float_prior)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="nextafter.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float_prior.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_next_float_float_next">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.next_float.float_next"></a><a class="link" href="float_next.html" title="Finding the Next Greater Representable Value (float_next)">Finding the Next
+ Greater Representable Value (float_next)</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.next_float.float_next.h0"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.float_next.synopsis"></a></span><a class="link" href="float_next.html#math_toolkit.next_float.float_next.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">next</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">FPT</span><span class="special">></span>
+<span class="identifier">FPT</span> <span class="identifier">float_next</span><span class="special">(</span><span class="identifier">FPT</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.next_float.float_next.h1"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.float_next.description_float_next"></a></span><a class="link" href="float_next.html#math_toolkit.next_float.float_next.description_float_next">Description
+ - float_next</a>
+ </h5>
+<p>
+ Returns the next representable value which is greater than <span class="emphasis"><em>x</em></span>.
+ If <span class="emphasis"><em>x</em></span> is non-finite then returns the result of a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>. If
+ there is no such value greater than <span class="emphasis"><em>x</em></span> then returns an
+ <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>.
+ </p>
+<p>
+ Has the same effect as
+ </p>
+<pre class="programlisting"><span class="identifier">nextafter</span><span class="special">(</span><span class="identifier">val</span><span class="special">,</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">FPT</span><span class="special">>::</span><span class="identifier">max</span><span class="special">)());</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="nextafter.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float_prior.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_prior.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/next_float/float_prior.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Finding the Next Smaller Representable Value (float_prior)</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">
+<link rel="prev" href="float_next.html" title="Finding the Next Greater Representable Value (float_next)">
+<link rel="next" href="float_distance.html" title="Calculating the Representation Distance Between Two Floating Point Values (ULP) float_distance">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="float_next.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float_distance.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_next_float_float_prior">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.next_float.float_prior"></a><a class="link" href="float_prior.html" title="Finding the Next Smaller Representable Value (float_prior)">Finding the Next
+ Smaller Representable Value (float_prior)</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.next_float.float_prior.h0"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.float_prior.synopsis"></a></span><a class="link" href="float_prior.html#math_toolkit.next_float.float_prior.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">next</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">FPT</span><span class="special">></span>
+<span class="identifier">FPT</span> <span class="identifier">float_prior</span><span class="special">(</span><span class="identifier">FPT</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.next_float.float_prior.h1"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.float_prior.description_float_prior"></a></span><a class="link" href="float_prior.html#math_toolkit.next_float.float_prior.description_float_prior">Description
+ - float_prior</a>
+ </h5>
+<p>
+ Returns the next representable value which is less than <span class="emphasis"><em>x</em></span>.
+ If <span class="emphasis"><em>x</em></span> is non-finite then returns the result of a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>. If
+ there is no such value less than <span class="emphasis"><em>x</em></span> then returns an
+ <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>.
+ </p>
+<p>
+ Has the same effect as
+ </p>
+<pre class="programlisting"><span class="identifier">nextafter</span><span class="special">(</span><span class="identifier">val</span><span class="special">,</span> <span class="special">-(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">FPT</span><span class="special">>::</span><span class="identifier">max</span><span class="special">)());</span> <span class="comment">// Note most negative value -max.</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="float_next.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float_distance.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/next_float/nextafter.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/next_float/nextafter.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,117 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Finding the Next Representable Value in a Specific Direction (nextafter)</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">
+<link rel="prev" href="../next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">
+<link rel="next" href="float_next.html" title="Finding the Next Greater Representable Value (float_next)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../next_float.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float_next.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_next_float_nextafter">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.next_float.nextafter"></a><a class="link" href="nextafter.html" title="Finding the Next Representable Value in a Specific Direction (nextafter)">Finding the Next Representable
+ Value in a Specific Direction (nextafter)</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.next_float.nextafter.h0"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.nextafter.synopsis"></a></span><a class="link" href="nextafter.html#math_toolkit.next_float.nextafter.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">next</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">FPT</span><span class="special">></span>
+<span class="identifier">FPT</span> <span class="identifier">nextafter</span><span class="special">(</span><span class="identifier">FPT</span> <span class="identifier">val</span><span class="special">,</span> <span class="identifier">FPT</span> <span class="identifier">direction</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.next_float.nextafter.h1"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.nextafter.description_nextafter"></a></span><a class="link" href="nextafter.html#math_toolkit.next_float.nextafter.description_nextafter">Description
+ - nextafter</a>
+ </h5>
+<p>
+ This is an implementation of the <code class="computeroutput"><span class="identifier">nextafter</span></code>
+ function included in the C99 standard. (It is also effectively an implementation
+ of the C99 'nexttoward' legacy function which differs only having a long
+ double direction, and can generally serve in its place if required).
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The C99 functions must use suffixes f and l to distinguish float and long
+ double versions. C++ uses the template mechanism instead.
+ </p></td></tr>
+</table></div>
+<p>
+ Returns the next representable value after <span class="emphasis"><em>x</em></span> in the
+ direction of <span class="emphasis"><em>y</em></span>. If <code class="computeroutput"><span class="identifier">x</span>
+ <span class="special">==</span> <span class="identifier">y</span></code>
+ then returns <span class="emphasis"><em>x</em></span>. If <span class="emphasis"><em>x</em></span> is non-finite
+ then returns the result of a <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ If there is no such value in the direction of <span class="emphasis"><em>y</em></span> then
+ returns an <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The template parameter FTP must be a floating-point type. An integer type,
+ for example, will produce an unhelpful error message.
+ </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="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Nearly always, you just want the next or prior representable value, so
+ instead use <code class="computeroutput"><span class="identifier">float_next</span></code>
+ or <code class="computeroutput"><span class="identifier">float_prior</span></code> below.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.next_float.nextafter.h2"></a>
+ <span class="phrase"><a name="math_toolkit.next_float.nextafter.examples_nextafter"></a></span><a class="link" href="nextafter.html#math_toolkit.next_float.nextafter.examples_nextafter">Examples -
+ nextafter</a>
+ </h5>
+<p>
+ The two representations using a 32-bit float either side of unity are:
+ </p>
+<pre class="programlisting"><span class="identifier">The</span> <span class="identifier">nearest</span> <span class="special">(</span><span class="identifier">exact</span><span class="special">)</span> <span class="identifier">representation</span> <span class="identifier">of</span> <span class="number">1.F</span> <span class="identifier">is</span> <span class="number">1.00000000</span>
+<span class="identifier">nextafter</span><span class="special">(</span><span class="number">1.F</span><span class="special">,</span> <span class="number">999</span><span class="special">)</span> <span class="identifier">is</span> <span class="number">1.00000012</span>
+<span class="identifier">nextafter</span><span class="special">(</span><span class="number">1</span><span class="special">/</span><span class="identifier">f</span><span class="special">,</span> <span class="special">-</span><span class="number">999</span><span class="special">)</span> <span class="identifier">is</span> <span class="number">0.99999994</span>
+
+<span class="identifier">The</span> <span class="identifier">nearest</span> <span class="special">(</span><span class="keyword">not</span> <span class="identifier">exact</span><span class="special">)</span> <span class="identifier">representation</span> <span class="identifier">of</span> <span class="number">0.1F</span> <span class="identifier">is</span> <span class="number">0.100000001</span>
+<span class="identifier">nextafter</span><span class="special">(</span><span class="number">0.1F</span><span class="special">,</span> <span class="number">10</span><span class="special">)</span> <span class="identifier">is</span> <span class="number">0.100000009</span>
+<span class="identifier">nextafter</span><span class="special">(</span><span class="number">0.1F</span><span class="special">,</span> <span class="number">10</span><span class="special">)</span> <span class="identifier">is</span> <span class="number">0.099999994</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../next_float.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../next_float.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="float_next.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_create.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_create.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,74 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Octonion Creation Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_value_ops.html" title="Octonion Value Operations">
+<link rel="next" href="oct_trans.html" title="Octonions Transcendentals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_value_ops.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_trans.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_create">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_create"></a><a class="link" href="oct_create.html" title="Octonion Creation Functions">Octonion Creation Functions</a>
+</h2></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">spherical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&
;</span> <span class="identifier">phi2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi5</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi6</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">multipolar</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="ide
ntifier">theta2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta4</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">cylindrical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">angle</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifi
er">h2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h5</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h6</span><span class="special">);</span>
+</pre>
+<p>
+ These build octonions in a way similar to the way polar builds complex numbers,
+ as there is no strict equivalent to polar coordinates for octonions.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">spherical</span></code> is a simple transposition
+ of <code class="computeroutput"><span class="identifier">polar</span></code>, it takes as inputs
+ a (positive) magnitude and a point on the hypersphere, given by three angles.
+ The first of these, <span class="emphasis"><em>theta</em></span> has a natural range of -pi to
+ +pi, and the other two have natural ranges of -pi/2 to +pi/2 (as is the case
+ with the usual spherical coordinates in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>).
+ Due to the many symmetries and periodicities, nothing untoward happens if the
+ magnitude is negative or the angles are outside their natural ranges. The expected
+ degeneracies (a magnitude of zero ignores the angles settings...) do happen
+ however.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">cylindrical</span></code> is likewise a simple
+ transposition of the usual cylindrical coordinates in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>,
+ which in turn is another derivative of planar polar coordinates. The first
+ two inputs are the polar coordinates of the first <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span>
+ component of the octonion. The third and fourth inputs are placed into the
+ third and fourth <span class="emphasis"><em><span class="bold"><strong>R</strong></span></em></span> components
+ of the octonion, respectively.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">multipolar</span></code> is yet another simple
+ generalization of polar coordinates. This time, both <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span>
+ components of the octonion are given in polar coordinates.
+ </p>
+<p>
+ In this version of our implementation of octonions, there is no analogue of
+ the complex value operation arg as the situation is somewhat more complicated.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_value_ops.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_trans.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_header.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_header.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,39 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header File</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_overview.html" title="Overview">
+<link rel="next" href="oct_synopsis.html" title="Synopsis">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_synopsis.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_header">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_header"></a><a class="link" href="oct_header.html" title="Header File">Header File</a>
+</h2></div></div></div>
+<p>
+ The interface and implementation are both supplied by the header file octonion.hpp.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_synopsis.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_history.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_history.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,101 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>History</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="acknowledgements.html" title="Acknowledgements">
+<link rel="next" href="oct_todo.html" title="To Do">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgements.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_todo.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_history">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_history"></a><a class="link" href="oct_history.html" title="History">History</a>
+</h2></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ 1.5.9 - 13/5/2013: Incorporated into Boost.Math.
+ </li>
+<li class="listitem">
+ 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format.
+ </li>
+<li class="listitem">
+ 1.5.7 - 25/02/2003: transitionned to the unit test framework; <boost/config.hpp>
+ now included by the library header (rather than the test files), via <boost/math/quaternion.hpp>.
+ </li>
+<li class="listitem">
+ 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis
+ Evlogimenos (alkis_at_[hidden]).
+ </li>
+<li class="listitem">
+ 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens
+ (michael_at_[hidden]); requires the /Za compiler option.
+ </li>
+<li class="listitem">
+ 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different
+ translation units); attempt at an improved compatibility with Microsoft
+ compilers, by Michael Stevens (michael_at_[hidden]) and Fredrik Blomqvist;
+ other compatibility fixes.
+ </li>
+<li class="listitem">
+ 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor
+ (gregod_at_[hidden]).
+ </li>
+<li class="listitem">
+ 1.5.2 - 07/07/2001: introduced namespace math.
+ </li>
+<li class="listitem">
+ 1.5.1 - 07/06/2001: (end of Boost review) now includes <boost/math/special_functions/sinc.hpp>
+ and <boost/math/special_functions/sinhc.hpp> instead of <boost/special_functions.hpp>;
+ corrected bug in sin (Daryle Walker); removed check for self-assignment
+ (Gary Powel); made converting functions explicit (Gary Powel); added overflow
+ guards for division operators and abs (Peter Schmitteckert); added sup
+ and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code.
+ </li>
+<li class="listitem">
+ 1.5.0 - 23/03/2001: boostification, inlining of all operators except input,
+ output and pow, fixed exception safety of some members (template version).
+ </li>
+<li class="listitem">
+ 1.4.0 - 09/01/2001: added tan and tanh.
+ </li>
+<li class="listitem">
+ 1.3.1 - 08/01/2001: cosmetic fixes.
+ </li>
+<li class="listitem">
+ 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink_at_[hidden])
+ algorithm.
+ </li>
+<li class="listitem">
+ 1.2.0 - 25/05/2000: fixed the division operators and output; changed many
+ signatures.
+ </li>
+<li class="listitem">
+ 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh.
+ </li>
+<li class="listitem">
+ 1.0.0 - 10/08/1999: first public version.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="acknowledgements.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_todo.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_mem_fun.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_mem_fun.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,249 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Octonion Member Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_typedefs.html" title="Octonion Member Typedefs">
+<link rel="next" href="oct_non_mem.html" title="Octonion Non-Member Operators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_typedefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_non_mem.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_mem_fun">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_mem_fun"></a><a class="link" href="oct_mem_fun.html" title="Octonion Member Functions">Octonion Member Functions</a>
+</h2></div></div></div>
+<h4>
+<a name="math_toolkit.oct_mem_fun.h0"></a>
+ <span class="phrase"><a name="math_toolkit.oct_mem_fun.constructors"></a></span><a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">Constructors</a>
+ </h4>
+<p>
+ Template version:
+ </p>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <s
pan class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="i
dentifier">T</span><span class="special">());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</sp
an><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z3</span> <span class="special">=</span>
<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier"
>boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>());</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Float specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <span c
lass="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="number">0.0f</
span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float<
/span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z3</span> <span class="special">=</
span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">>());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q1</span> <span class="special">=</span> <span class="special">::</span><span class="identifie
r">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Double specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <span
class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="number">0.0</
span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">doub
le</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z3</span> <span class="specia
l">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">>());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q1</span> <span class="special">=</span> <span class="special">::</span><span class="identif
ier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Long double specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyw
ord">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0L
</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span>
<span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><
</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q1</span> <span class="s
pecial">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ A default constructor is provided for each form, which initializes each component
+ to the default values for their type (i.e. zero for floating numbers). This
+ constructor can also accept one to eight base type arguments. A constructor
+ is also provided to build octonions from one to four complex numbers sharing
+ the same base type, and another taking one or two quaternions sharing the same
+ base type. The unspecialized template also sports a templarized copy constructor,
+ while the specialized forms have copy constructors from the other two specializations,
+ which are explicit when a risk of precision loss exists. For the unspecialized
+ form, the base type's constructors must not throw.
+ </p>
+<p>
+ Destructors and untemplated copy constructors (from the same type) are provided
+ by the compiler. Converting copy constructors make use of a templated helper
+ function in a "detail" subnamespace.
+ </p>
+<h4>
+<a name="math_toolkit.oct_mem_fun.h1"></a>
+ <span class="phrase"><a name="math_toolkit.oct_mem_fun.other_member_functions"></a></span><a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_functions">Other
+ member functions</a>
+ </h4>
+<h5>
+<a name="math_toolkit.oct_mem_fun.h2"></a>
+ <span class="phrase"><a name="math_toolkit.oct_mem_fun.real_and_unreal_parts"></a></span><a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.real_and_unreal_parts">Real
+ and Unreal Parts</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">real</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">unreal</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Like complex number, octonions do have a meaningful notion of "real part",
+ but unlike them there is no meaningful notion of "imaginary part".
+ Instead there is an "unreal part" which itself is a octonion, and
+ usually nothing simpler (as opposed to the complex number case). These are
+ returned by the first two functions.
+ </p>
+<h5>
+<a name="math_toolkit.oct_mem_fun.h3"></a>
+ <span class="phrase"><a name="math_toolkit.oct_mem_fun.individual_real_components"></a></span><a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">Individual
+ Real Components</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">R_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_3</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_4</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_5</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_6</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_7</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_8</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ A octonion having eight real components, these are returned by these eight
+ functions. Hence real and R_component_1 return the same value.
+ </p>
+<h5>
+<a name="math_toolkit.oct_mem_fun.h4"></a>
+ <span class="phrase"><a name="math_toolkit.oct_mem_fun.individual_complex_components"></a></span><a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">Individual
+ Complex Components</a>
+ </h5>
+<pre class="programlisting"><span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">C_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">C_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">C_component_3</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">C_component_4</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ A octonion likewise has four complex components. Actually, octonions are indeed
+ a (left) vector field over the complexes, but beware, as for any octonion
+ <span class="emphasis"><em><code class="literal">o = α + βi + γj + δk + εe' + ζi' + ηj' + θk'</code></em></span> we also have <span class="emphasis"><em><code class="literal">o
+ = (α + βi) + (γ + δi)j + (ε + ζi)e' + (η - θi)j'</code></em></span> (note the <span class="bold"><strong>minus</strong></span> sign
+ in the last factor). What the C_component_n functions return, however, are
+ the complexes which could be used to build the octonion using the constructor,
+ and <span class="bold"><strong>not</strong></span> the components of the octonion on
+ the basis <span class="emphasis"><em><code class="literal">(1, j, e', j')</code></em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.oct_mem_fun.h5"></a>
+ <span class="phrase"><a name="math_toolkit.oct_mem_fun.individual_quaternion_components"></a></span><a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_quaternion_components">Individual
+ Quaternion Components</a>
+ </h5>
+<pre class="programlisting"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">H_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">H_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Likewise, for any octonion <span class="emphasis"><em><code class="literal">o = α + βi + γj + δk + εe' + ζi' + ηj' + θk'</code></em></span> we
+ also have <span class="emphasis"><em><code class="literal">o = (α + βi + γj + δk) + (ε + ζi + ηj - θj)e'</code></em></span>, though there is no
+ meaningful vector-space-like structure based on the quaternions. What the H_component_n
+ functions return are the quaternions which could be used to build the octonion
+ using the constructor.
+ </p>
+<h4>
+<a name="math_toolkit.oct_mem_fun.h6"></a>
+ <span class="phrase"><a name="math_toolkit.oct_mem_fun.octonion_member_operators"></a></span><a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.octonion_member_operators">Octonion
+ Member Operators</a>
+ </h4>
+<h5>
+<a name="math_toolkit.oct_mem_fun.h7"></a>
+ <span class="phrase"><a name="math_toolkit.oct_mem_fun.assignment_operators"></a></span><a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">Assignment
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the expected assignment, with type modification if necessary
+ (for instance, assigning from a base type will set the real part to that value,
+ and all other components to zero). For the unspecialized form, the base type's
+ assignment operators must not throw.
+ </p>
+<h5>
+<a name="math_toolkit.oct_mem_fun.h8"></a>
+ <span class="phrase"><a name="math_toolkit.oct_mem_fun.other_member_operators"></a></span><a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">Other
+ Member Operators</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)+</span><span class="identifier">rhs</span></code>
+ and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ The unspecialized form has exception guards, which the specialized forms do
+ not, so as to insure exception safety. For the unspecialized form, the base
+ type's assignment operators must not throw.
+ </p>
+<pre class="programlisting"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)-</span><span class="identifier">rhs</span></code>
+ and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ The unspecialized form has exception guards, which the specialized forms do
+ not, so as to insure exception safety. For the unspecialized form, the base
+ type's assignment operators must not throw.
+ </p>
+<pre class="programlisting"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)*</span><span class="identifier">rhs</span></code>
+ in this order (order is important as multiplication is not commutative for
+ octonions) and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. The unspecialized form has exception guards,
+ which the specialized forms do not, so as to insure exception safety. For the
+ unspecialized form, the base type's assignment operators must not throw. Also,
+ for clarity's sake, you should always group the factors in a multiplication
+ by groups of two, as the multiplication is not even associative on the octonions
+ (though there are of course cases where this does not matter, it usually does).
+ </p>
+<pre class="programlisting"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)*</span><span class="identifier">inverse_of</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">)</span></code>
+ in this order (order is important as multiplication is not commutative for
+ octonions) and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. The unspecialized form has exception guards,
+ which the specialized forms do not, so as to insure exception safety. For the
+ unspecialized form, the base type's assignment operators must not throw. As
+ for the multiplication, remember to group any two factors using parenthesis.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_typedefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_non_mem.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_non_mem.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_non_mem.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,213 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Octonion Non-Member Operators</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_mem_fun.html" title="Octonion Member Functions">
+<link rel="next" href="oct_value_ops.html" title="Octonion Value Operations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_mem_fun.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_value_ops.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_non_mem">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_non_mem"></a><a class="link" href="oct_non_mem.html" title="Octonion Non-Member Operators">Octonion Non-Member Operators</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.oct_non_mem.h0"></a>
+ <span class="phrase"><a name="math_toolkit.oct_non_mem.unary_plus_and_minus_operators"></a></span><a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.unary_plus_and_minus_operators">Unary Plus
+ and Minus Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This unary operator simply returns o.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This unary operator returns the opposite of o.
+ </p>
+<h5>
+<a name="math_toolkit.oct_non_mem.h1"></a>
+ <span class="phrase"><a name="math_toolkit.oct_non_mem.binary_addition_operators"></a></span><a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_addition_operators">Binary
+ Addition Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special
">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="speci
al">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">co
nst</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">+=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.oct_non_mem.h2"></a>
+ <span class="phrase"><a name="math_toolkit.oct_non_mem.binary_subtraction_operators"></a></span><a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_subtraction_operators">Binary
+ Subtraction Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special
">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="speci
al">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">co
nst</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">-=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.oct_non_mem.h3"></a>
+ <span class="phrase"><a name="math_toolkit.oct_non_mem.binary_multiplication_operators"></a></span><a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_multiplication_operators">Binary Multiplication
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special
">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="speci
al">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">co
nst</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">*=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.oct_non_mem.h4"></a>
+ <span class="phrase"><a name="math_toolkit.oct_non_mem.binary_division_operators"></a></span><a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_division_operators">Binary
+ Division Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special
">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="speci
al">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">co
nst</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">/=</span>
+ <span class="identifier">rhs</span></code>. It is of course still an error
+ to divide by zero...
+ </p>
+<h5>
+<a name="math_toolkit.oct_non_mem.h5"></a>
+ <span class="phrase"><a name="math_toolkit.oct_non_mem.binary_equality_operators"></a></span><a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_equality_operators">Binary
+ Equality Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);
</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These return true if and only if the four components of <code class="computeroutput"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span></code> are
+ equal to their counterparts in <code class="computeroutput"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">rhs</span><span class="special">)</span></code>. As
+ with any floating-type entity, this is essentially meaningless.
+ </p>
+<h5>
+<a name="math_toolkit.oct_non_mem.h6"></a>
+ <span class="phrase"><a name="math_toolkit.oct_non_mem.binary_inequality_operators"></a></span><a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_inequality_operators">Binary
+ Inequality Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);
</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These return true if and only if <code class="computeroutput"><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">==</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">rhs</span><span class="special">)</span></code> is false. As with any floating-type entity,
+ this is essentially meaningless.
+ </p>
+<h5>
+<a name="math_toolkit.oct_non_mem.h7"></a>
+ <span class="phrase"><a name="math_toolkit.oct_non_mem.stream_extractor"></a></span><a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.stream_extractor">Stream
+ Extractor</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special">>></span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span c
lass="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Extracts an octonion <code class="computeroutput"><span class="identifier">o</span></code>. We
+ accept any format which seems reasonable. However, since this leads to a great
+ many ambiguities, decisions were made to lift these. In case of doubt, stick
+ to lists of reals.
+ </p>
+<p>
+ The input values must be convertible to T. If bad input is encountered, calls
+ <code class="computeroutput"><span class="identifier">is</span><span class="special">.</span><span class="identifier">setstate</span><span class="special">(</span><span class="identifier">ios</span><span class="special">::</span><span class="identifier">failbit</span><span class="special">)</span></code> (which may throw <code class="computeroutput"><span class="identifier">ios</span><span class="special">::</span><span class="identifier">failure</span></code>
+ (27.4.5.3)).
+ </p>
+<p>
+ Returns <code class="computeroutput"><span class="identifier">is</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.oct_non_mem.h8"></a>
+ <span class="phrase"><a name="math_toolkit.oct_non_mem.stream_inserter"></a></span><a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.stream_inserter">Stream
+ Inserter</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special"><<</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span c
lass="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Inserts the octonion <code class="computeroutput"><span class="identifier">o</span></code> onto
+ the stream <code class="computeroutput"><span class="identifier">os</span></code> as if it were
+ implemented as follows:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="keyword">operator</span> <span class="special"><<</span> <span class="special">(</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">os</span><span class="special">,</span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostringstream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="identifier">s</span><span class="special">;</span>
+
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">flags</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">flags</span><span class="special">());</span>
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">getloc</span><span class="special">());</span>
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">precision</span><span class="special">());</span>
+
+ <span class="identifier">s</span> <span class="special"><<</span> <span class="char">'('</span> <span class="special"><<</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_2</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_3</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_5</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_6</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_7</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_8</span><span class="special">()</span> <span class="special"><<</span> <span class="char">')'</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="identifier">os</span> <span class="special"><<</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">str</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_mem_fun.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_value_ops.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_overview.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_overview.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Overview</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="next" href="oct_header.html" title="Header File">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../octonions.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_header.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_overview">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_overview"></a><a class="link" href="oct_overview.html" title="Overview">Overview</a>
+</h2></div></div></div>
+<p>
+ Octonions, like quaternions,
+ are a relative of complex numbers.
+ </p>
+<p>
+ Octonions see some use in theoretical physics.
+ </p>
+<p>
+ In practical terms, an octonion is simply an octuple of real numbers (α,β,γ,δ,ε,ζ,η,θ), which
+ we can write in the form <span class="emphasis"><em><code class="literal">o = α + βi + γj + δk + εe' + ζi' + ηj' + θk'</code></em></span>, where
+ <span class="emphasis"><em><code class="literal">i</code></em></span>, <span class="emphasis"><em><code class="literal">j</code></em></span>
+ and <span class="emphasis"><em><code class="literal">k</code></em></span> are the same objects as for quaternions,
+ and <span class="emphasis"><em><code class="literal">e'</code></em></span>, <span class="emphasis"><em><code class="literal">i'</code></em></span>,
+ <span class="emphasis"><em><code class="literal">j'</code></em></span> and <span class="emphasis"><em><code class="literal">k'</code></em></span>
+ are distinct objects which play essentially the same kind of role as <span class="emphasis"><em><code class="literal">i</code></em></span>
+ (or <span class="emphasis"><em><code class="literal">j</code></em></span> or <span class="emphasis"><em><code class="literal">k</code></em></span>).
+ </p>
+<p>
+ Addition and a multiplication is defined on the set of octonions, which generalize
+ their quaternionic counterparts. The main novelty this time is that <span class="bold"><strong>the multiplication is not only not commutative, is now not even
+ associative</strong></span> (i.e. there are octonions <span class="emphasis"><em><code class="literal">x</code></em></span>,
+ <span class="emphasis"><em><code class="literal">y</code></em></span> and <span class="emphasis"><em><code class="literal">z</code></em></span>
+ such that <span class="emphasis"><em><code class="literal">x(yz) ≠ (xy)z</code></em></span>). A way of remembering
+ things is by using the following multiplication table:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../octonion/graphics/octonion_blurb17.jpeg"></span>
+ </p>
+<p>
+ Octonions (and their kin) are described in far more details in this other
+ document (with <a href="../../../quaternion/TQE_EA.pdf" target="_top">errata
+ and addenda</a>).
+ </p>
+<p>
+ Some traditional constructs, such as the exponential, carry over without too
+ much change into the realms of octonions, but other, such as taking a square
+ root, do not (the fact that the exponential has a closed form is a result of
+ the author, but the fact that the exponential exists at all for octonions is
+ known since quite a long time ago).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../octonions.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_header.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_specialization.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_specialization.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,232 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Octonion Specializations</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="octonion.html" title="Template Class octonion">
+<link rel="next" href="oct_typedefs.html" title="Octonion Member Typedefs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="octonion.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_typedefs.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_specialization">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_specialization"></a><a class="link" href="oct_specialization.html" title="Octonion Specializations">Octonion Specializations</a>
+</h2></div></div></div>
+<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"><></span>
+<span class="keyword">class</span> <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r
equested_d</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_h</span> <span class="special">=</span> <s
pan class="number">0.0f</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span cl
ass="special"><</span><span class="keyword">float</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span c
lass="identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q1</span> <span class="special">=</span>
<span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">float</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.real_and_unreal_parts">real</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.real_and_unreal_parts">unreal</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">float</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_5</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_6</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_7</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_8</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_quaternion_components">H_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_quaternion_components">H_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="math_octonion_double"></a><pre class="programlisting"><span class="keyword">template</span><span class="special"><></span>
+<span class="keyword">class</span> <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">
requested_d</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_h</span> <span class="special">=</span> <
span class="number">0.0</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span
class="special"><</span><span class="keyword">double</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <
span class="identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q1</span> <span class="special">=</span
> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.real_and_unreal_parts">real</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.real_and_unreal_parts">unreal</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_5</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_6</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_7</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_8</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_quaternion_components">H_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_quaternion_components">H_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="math_octonion_long_double"></a><pre class="programlisting"><span class="keyword">template</span><span class="special"><></span>
+<span class="keyword">class</span> <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">lon
g</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_g</span> <span class="special">=</span>
<span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class=
"identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class
="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span>
<span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.real_and_unreal_parts">real</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.real_and_unreal_parts">unreal</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_5</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_6</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_7</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_8</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_quaternion_components">H_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_quaternion_components">H_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespaces</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="octonion.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_typedefs.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_synopsis.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_synopsis.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,131 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Synopsis</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_header.html" title="Header File">
+<link rel="next" href="octonion.html" title="Template Class octonion">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_header.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="octonion.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_synopsis">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_synopsis"></a><a class="link" href="oct_synopsis.html" title="Synopsis">Synopsis</a>
+</h2></div></div></div>
+<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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="octonion.html" title="Template Class octonion">octonion</a><span class="special">;</span>
+<span class="keyword">template</span><span class="special"><></span> <span class="keyword">class</span> <a class="link" href="oct_specialization.html" title="Octonion Specializations">octonion<float></a><span class="special">;</span>
+<span class="keyword">template</span><span class="special"><></span> <span class="keyword">class</span> <a class="link" href="oct_specialization.html#math_octonion_double">octonion<double></a><span class="special">;</span>
+<span class="keyword">template</span><span class="special"><></span> <span class="keyword">class</span> <a class="link" href="oct_specialization.html#math_octonion_long_double">octonion<long double></a><span class="special">;</span>
+
+<span class="comment">// operators</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_addition_operators">operator +</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_addition_operators">operator +</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_addition_operators">operator +</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="ident
ifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_addition_operators">operator +</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&a
mp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_addition_operators">operator +</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="key
word">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_addition_operators">operator +</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special"
>></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_addition_operators">operator +</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="id
entifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special"
>&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="
keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="speci
al">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class=
"identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="speci
al">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span clas
s="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="sp
ecial">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_division_operators">operator /</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_division_operators">operator /</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_division_operators">operator /</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="ident
ifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_division_operators">operator /</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&a
mp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_division_operators">operator /</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="key
word">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_division_operators">operator /</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special"
>></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_division_operators">operator /</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.unary_plus_and_minus_operators">operator +</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.unary_plus_and_minus_operators">operator -</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_equality_operators">operator ==</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_equality_operators">operator ==</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_equality_operators">operator ==</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_equality_operators">operator ==</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_equality_operators">operator ==</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="spe
cial">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_equality_operators">operator ==</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifie
r">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_equality_operators">operator ==</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_inequality_operators">operator !=</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_inequality_operators">operator !=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_inequality_operators">operator !=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_inequality_operators">operator !=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_inequality_operators">operator !=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="s
pecial">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_inequality_operators">operator !=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identif
ier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.binary_inequality_operators">operator !=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.stream_extractor">operator >></a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="s
pecial">&</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_non_mem.html#math_toolkit.oct_non_mem.stream_inserter">operator <<</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="ke
yword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="comment">// values</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.real_and_unreal">real</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.real_and_unreal">unreal</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.sup">sup</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.l1">l1</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span><span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.abs">abs</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.norm">norm</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span><span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.conj">conj</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_create.html" title="Octonion Creation Functions">spherical</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span c
lass="special">&</span> <span class="identifier">phi2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi5</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi6</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_create.html" title="Octonion Creation Functions">multipolar</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <spa
n class="special">&</span> <span class="identifier">theta2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta4</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_create.html" title="Octonion Creation Functions">cylindrical</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">angle</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span cla
ss="special">&</span> <span class="identifier">h2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h5</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h6</span><span class="special">);</span>
+
+<span class="comment">// transcendentals</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_trans.html#math_toolkit.oct_trans.exp">exp</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_trans.html#math_toolkit.oct_trans.cos">cos</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_trans.html#math_toolkit.oct_trans.sin">sin</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_trans.html#math_toolkit.oct_trans.tan">tan</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_trans.html#math_toolkit.oct_trans.cosh">cosh</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_trans.html#math_toolkit.oct_trans.sinh">sinh</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_trans.html#math_toolkit.oct_trans.tanh">tanh</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_trans.html#math_toolkit.oct_trans.pow">pow</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">);</span>
+
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespaces</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_header.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="octonion.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_tests.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_tests.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Test Program</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_trans.html" title="Octonions Transcendentals">
+<link rel="next" href="acknowledgements.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_trans.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_tests">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_tests"></a><a class="link" href="oct_tests.html" title="Test Program">Test Program</a>
+</h2></div></div></div>
+<p>
+ The octonion_test.cpp
+ test program tests octonions specialisations for float, double and long double
+ (sample output).
+ </p>
+<p>
+ If you define the symbol BOOST_OCTONION_TEST_VERBOSE, you will get additional
+ output (verbose output);
+ this will only be helpfull if you enable message output at the same time, of
+ course (by uncommenting the relevant line in the test or by adding --log_level=messages
+ to your command line,...). In that case, and if you are running interactively,
+ you may in addition define the symbol BOOST_INTERACTIVE_TEST_INPUT_ITERATOR
+ to interactively test the input operator with input of your choice from the
+ standard input (instead of hard-coding it in the test).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_trans.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_todo.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_todo.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>To Do</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_history.html" title="History">
+<link rel="next" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_history.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../gcd_lcm.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_todo">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_todo"></a><a class="link" href="oct_todo.html" title="To Do">To Do</a>
+</h2></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Improve testing.
+ </li>
+<li class="listitem">
+ Rewrite input operatore using Spirit (creates a dependency).
+ </li>
+<li class="listitem">
+ Put in place an Expression Template mechanism (perhaps borrowing from uBlas).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_history.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../gcd_lcm.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_trans.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_trans.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,138 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Octonions Transcendentals</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_create.html" title="Octonion Creation Functions">
+<link rel="next" href="oct_tests.html" title="Test Program">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_create.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_tests.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_trans">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_trans"></a><a class="link" href="oct_trans.html" title="Octonions Transcendentals">Octonions Transcendentals</a>
+</h2></div></div></div>
+<p>
+ There is no <code class="computeroutput"><span class="identifier">log</span></code> or <code class="computeroutput"><span class="identifier">sqrt</span></code> provided for octonions in this implementation,
+ and <code class="computeroutput"><span class="identifier">pow</span></code> is likewise restricted
+ to integral powers of the exponent. There are several reasons to this: on the
+ one hand, the equivalent of analytic continuation for octonions ("branch
+ cuts") remains to be investigated thoroughly (by me, at any rate...),
+ and we wish to avoid the nonsense introduced in the standard by exponentiations
+ of complexes by complexes (which is well defined, but not in the standard...).
+ Talking of nonsense, saying that <code class="computeroutput"><span class="identifier">pow</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">)</span></code> is "implementation
+ defined" is just plain brain-dead...
+ </p>
+<p>
+ We do, however provide several transcendentals, chief among which is the exponential.
+ That it allows for a "closed formula" is a result of the author (the
+ existence and definition of the exponential, on the octonions among others,
+ on the other hand, is a few centuries old). Basically, any converging power
+ series with real coefficients which allows for a closed formula in <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> can be transposed to <span class="emphasis"><em><span class="bold"><strong>O</strong></span></em></span>. More transcendentals of this type could
+ be added in a further revision upon request. It should be noted that it is
+ these functions which force the dependency upon the boost/math/special_functions/sinc.hpp
+ and the boost/math/special_functions/sinhc.hpp
+ headers.
+ </p>
+<h5>
+<a name="math_toolkit.oct_trans.h0"></a>
+ <span class="phrase"><a name="math_toolkit.oct_trans.exp"></a></span><a class="link" href="oct_trans.html#math_toolkit.oct_trans.exp">exp</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">exp</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the exponential of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_trans.h1"></a>
+ <span class="phrase"><a name="math_toolkit.oct_trans.cos"></a></span><a class="link" href="oct_trans.html#math_toolkit.oct_trans.cos">cos</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">cos</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the cosine of the octonion
+ </p>
+<h5>
+<a name="math_toolkit.oct_trans.h2"></a>
+ <span class="phrase"><a name="math_toolkit.oct_trans.sin"></a></span><a class="link" href="oct_trans.html#math_toolkit.oct_trans.sin">sin</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">sin</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the sine of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_trans.h3"></a>
+ <span class="phrase"><a name="math_toolkit.oct_trans.tan"></a></span><a class="link" href="oct_trans.html#math_toolkit.oct_trans.tan">tan</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">tan</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the tangent of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_trans.h4"></a>
+ <span class="phrase"><a name="math_toolkit.oct_trans.cosh"></a></span><a class="link" href="oct_trans.html#math_toolkit.oct_trans.cosh">cosh</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">cosh</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic cosine of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_trans.h5"></a>
+ <span class="phrase"><a name="math_toolkit.oct_trans.sinh"></a></span><a class="link" href="oct_trans.html#math_toolkit.oct_trans.sinh">sinh</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">sinh</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic sine of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_trans.h6"></a>
+ <span class="phrase"><a name="math_toolkit.oct_trans.tanh"></a></span><a class="link" href="oct_trans.html#math_toolkit.oct_trans.tanh">tanh</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">tanh</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic tangent of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_trans.h7"></a>
+ <span class="phrase"><a name="math_toolkit.oct_trans.pow"></a></span><a class="link" href="oct_trans.html#math_toolkit.oct_trans.pow">pow</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the n-th power of the octonion q.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_create.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_tests.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_typedefs.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_typedefs.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Octonion Member Typedefs</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_specialization.html" title="Octonion Specializations">
+<link rel="next" href="oct_mem_fun.html" title="Octonion Member Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_specialization.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_mem_fun.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_typedefs">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_typedefs"></a><a class="link" href="oct_typedefs.html" title="Octonion Member Typedefs">Octonion Member Typedefs</a>
+</h2></div></div></div>
+<p>
+ <span class="bold"><strong>value_type</strong></span>
+ </p>
+<p>
+ Template version:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Float specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Double specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Long double specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ These provide easy acces to the type the template is built upon.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_specialization.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_mem_fun.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/oct_value_ops.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/oct_value_ops.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,98 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Octonion Value Operations</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_non_mem.html" title="Octonion Non-Member Operators">
+<link rel="next" href="oct_create.html" title="Octonion Creation Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_non_mem.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_create.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_oct_value_ops">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.oct_value_ops"></a><a class="link" href="oct_value_ops.html" title="Octonion Value Operations">Octonion Value Operations</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.oct_value_ops.h0"></a>
+ <span class="phrase"><a name="math_toolkit.oct_value_ops.real_and_unreal"></a></span><a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.real_and_unreal">Real
+ and Unreal</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">real</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">unreal</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ These return <code class="computeroutput"><span class="identifier">o</span><span class="special">.</span><span class="identifier">real</span><span class="special">()</span></code> and
+ <code class="computeroutput"><span class="identifier">o</span><span class="special">.</span><span class="identifier">unreal</span><span class="special">()</span></code>
+ respectively.
+ </p>
+<h5>
+<a name="math_toolkit.oct_value_ops.h1"></a>
+ <span class="phrase"><a name="math_toolkit.oct_value_ops.conj"></a></span><a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.conj">conj</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">conj</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This returns the conjugate of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_value_ops.h2"></a>
+ <span class="phrase"><a name="math_toolkit.oct_value_ops.sup"></a></span><a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.sup">sup</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">sup</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This return the sup norm (the greatest among <code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())...</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_8</span><span class="special">()))</span></code> of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_value_ops.h3"></a>
+ <span class="phrase"><a name="math_toolkit.oct_value_ops.l1"></a></span><a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.l1">l1</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">l1</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This return the l1 norm (<code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())+...+</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_8</span><span class="special">())</span></code>) of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_value_ops.h4"></a>
+ <span class="phrase"><a name="math_toolkit.oct_value_ops.abs"></a></span><a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.abs">abs</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">abs</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This return the magnitude (Euclidian norm) of the octonion.
+ </p>
+<h5>
+<a name="math_toolkit.oct_value_ops.h5"></a>
+ <span class="phrase"><a name="math_toolkit.oct_value_ops.norm"></a></span><a class="link" href="oct_value_ops.html#math_toolkit.oct_value_ops.norm">norm</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">norm</span><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span><span class="keyword">const</span> <span class="special">&</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This return the (Cayley) norm of the octonion. The term "norm" might
+ be confusing, as most people associate it with the Euclidian norm (and quadratic
+ functionals). For this version of (the mathematical objects known as) octonions,
+ the Euclidian norm (also known as magnitude) is the square root of the Cayley
+ norm.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_non_mem.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_create.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/octonion.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/octonion.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,104 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Template Class octonion</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../octonions.html" title="Chapter 9. Octonions">
+<link rel="prev" href="oct_synopsis.html" title="Synopsis">
+<link rel="next" href="oct_specialization.html" title="Octonion Specializations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="oct_synopsis.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_specialization.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_octonion">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.octonion"></a><a class="link" href="octonion.html" title="Template Class octonion">Template Class octonion</a>
+</h2></div></div></div>
+<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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">octonion</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifi
er">requested_d</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_h</span> <span class="special
">=</span> <span class="identifier">T</span><span class="special">());</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span clas
s="special"><</span><span class="identifier">T</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="
identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q1</span> <span class="special">=</span> <s
pan class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>());</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="keyword">explicit</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.constructors">octonion</a><span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="identifier">T</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.real_and_unreal_parts">real</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.real_and_unreal_parts">unreal</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">T</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_5</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_6</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_7</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_real_components">R_component_8</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_complex_components">C_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_quaternion_components">H_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.individual_quaternion_components">H_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.assignment_operators">operator =</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator +=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator -=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator *=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">octonion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <a class="link" href="oct_mem_fun.html#math_toolkit.oct_mem_fun.other_member_operators">operator /=</a> <span class="special">(</span><span class="identifier">octonion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespaces</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="oct_synopsis.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="oct_specialization.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/overview_tr1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/overview_tr1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,607 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>C99 and C++ TR1 C-style Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="history1.html" title="History and What's New">
+<link rel="next" href="main_faq.html" title="Frequently Asked Questions FAQ">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="history1.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="main_faq.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_overview_tr1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.overview_tr1"></a><a class="link" href="overview_tr1.html" title="C99 and C++ TR1 C-style Functions">C99 and C++ TR1 C-style Functions</a>
+</h2></div></div></div>
+<p>
+ Many of the special functions included in this library are also a part of the
+ either the <a href="http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf" target="_top">C99
+ Standard ISO/IEC 9899:1999</a> or the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Technical
+ Report on C++ Library Extensions</a>. Therefore this library includes a
+ thin wrapper header <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">.</span><span class="identifier">hpp</span></code> that
+ provides compatibility with these two standards.
+ </p>
+<p>
+ There are various pros and cons to using the library in this way:
+ </p>
+<p>
+ Pros:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The header to include is lightweight (i.e. fast to compile).
+ </li>
+<li class="listitem">
+ The functions have extern "C" linkage, and so are usable from
+ other languages (not just C and C++).
+ </li>
+<li class="listitem">
+ C99 and C++ TR1 Standard compatibility.
+ </li>
+</ul></div>
+<p>
+ Cons:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ You will need to compile and link to the external Boost.Math libraries.
+ </li>
+<li class="listitem">
+ Limited to support for the 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>.
+ </li>
+<li class="listitem">
+ Error handling is handled via setting ::errno and returning NaN's and infinities:
+ this may be less flexible than an C++ exception based approach.
+ </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The separate libraries are required <span class="bold"><strong>only</strong></span>
+ if you choose to use boost/math/tr1.hpp rather than some other Boost.Math
+ header, the rest of Boost.Math remains header-only.
+ </p></td></tr>
+</table></div>
+<p>
+ The separate libraries required in order to use tr1.hpp can be compiled using
+ bjam from within the libs/math/build directory, or from the Boost root directory
+ using the usual Boost-wide install procedure. Alternatively the source files
+ are located in libs/math/src and each have the same name as the function they
+ implement. The various libraries are named as follows:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Functions
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ boost_math_c99f-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ float
+ </p>
+ </td>
+<td>
+ <p>
+ C99 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_c99-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ double
+ </p>
+ </td>
+<td>
+ <p>
+ C99 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_c99l-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ long double
+ </p>
+ </td>
+<td>
+ <p>
+ C99 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_tr1f-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ float
+ </p>
+ </td>
+<td>
+ <p>
+ TR1 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_tr1-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ double
+ </p>
+ </td>
+<td>
+ <p>
+ TR1 Functions
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ boost_math_tr1l-<suffix>
+ </p>
+ </td>
+<td>
+ <p>
+ long double
+ </p>
+ </td>
+<td>
+ <p>
+ TR1 Functions
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Where <code class="computeroutput"><span class="special"><</span><span class="identifier">suffix</span><span class="special">></span></code> encodes the compiler and build options
+ used to build the libraries: for example "libboost_math_tr1-vc80-mt-gd.lib"
+ would be the statically linked TR1 library to use with Visual C++ 8.0, in multithreading
+ debug mode, with the DLL VC++ runtime, where as "boost_math_tr1-vc80-mt.lib"
+ would be import library for the TR1 DLL to be used with Visual C++ 8.0 with
+ the release multithreaded DLL VC++ runtime. Refer to the getting started guide
+ for a <a href="http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html#library-naming" target="_top">full
+ explanation of the <code class="computeroutput"><span class="special"><</span><span class="identifier">suffix</span><span class="special">></span></code> meanings</a>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ Visual C++ users will typically have the correct library variant to link
+ against selected for them by boost/math/tr1.hpp based on your compiler settings.
+ </p>
+<p>
+ Users will need to define BOOST_MATH_TR1_DYN_LINK when building their code
+ if they want to link against the DLL versions of these libraries rather than
+ the static versions.
+ </p>
+<p>
+ Users can disable auto-linking by defining BOOST_MATH_TR1_NO_LIB when building:
+ this is typically only used when linking against a customised build of the
+ libraries.
+ </p>
+</td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Linux and Unix users will generally only have one variant of these libraries
+ installed, and can generally just link against -lboost_math_tr1 etc.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.overview_tr1.h0"></a>
+ <span class="phrase"><a name="math_toolkit.overview_tr1.usage_recomendations"></a></span><a class="link" href="overview_tr1.html#math_toolkit.overview_tr1.usage_recomendations">Usage
+ Recomendations</a>
+ </h5>
+<p>
+ This library now presents the user with a choice:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ To include the header only versions of the functions and have an easier
+ time linking, but a longer compile time.
+ </li>
+<li class="listitem">
+ To include the TR1 headers and link against an external library.
+ </li>
+</ul></div>
+<p>
+ Which option you choose depends largely on how you prefer to work and how your
+ system is set up.
+ </p>
+<p>
+ For example a casual user who just needs the acosh function, would probably
+ be better off including <code class="computeroutput"><span class="special"><</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">acosh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> and using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">acosh</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code> in their code.
+ </p>
+<p>
+ However, for large scale software development where compile times are significant,
+ and where the Boost libraries are already built and installed on the system,
+ then including <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> and using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">acosh</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>
+ will speed up compile times, reduce object files sizes (since there are no
+ templates being instantiated any more), and also speed up debugging runtimes
+ - since the externally compiled libraries can be compiler optimised, rather
+ than built using full settings - the difference in performance between <a class="link" href="getting_best.html" title="Getting the Best Performance from this Library">release and debug builds can be as much
+ as 20 times</a>, so for complex applications this can be a big win.
+ </p>
+<h5>
+<a name="math_toolkit.overview_tr1.h1"></a>
+ <span class="phrase"><a name="math_toolkit.overview_tr1.supported_c99_functions"></a></span><a class="link" href="overview_tr1.html#math_toolkit.overview_tr1.supported_c99_functions">Supported
+ C99 Functions</a>
+ </h5>
+<p>
+ See also the <a class="link" href="c99.html" title="C99 C Functions">quick reference guide for these
+ functions</a>.
+ </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">namespace</span> <span class="identifier">tr1</span><span class="special">{</span> <span class="keyword">extern</span> <span class="string">"C"</span><span class="special">{</span>
+
+<span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">float_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">double_t</span><span class="special">;</span>
+
+<span class="keyword">double</span> <span class="identifier">acosh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">acoshf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">acoshl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">asinh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">asinhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">asinhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">atanh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">atanhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">atanhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">cbrt</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cbrtf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cbrtl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">copysign</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">copysignf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">copysignl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">erf</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">erff</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">erfc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">erfcf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfcl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">expm1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">expm1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expm1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fmax</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fmaxf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fmaxl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fmin</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fminf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fminl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">hypot</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hypotf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypotl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">lgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">lgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">lgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">log1p</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">log1pf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">log1pl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="identifier">lround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nextafter</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nextafterf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nextafterl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nexttoward</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nexttowardf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nexttowardl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">round</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">roundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">roundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">tgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">tgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">trunc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">truncf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">truncl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="special">}}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.overview_tr1.h2"></a>
+ <span class="phrase"><a name="math_toolkit.overview_tr1.supported_tr1_functions"></a></span><a class="link" href="overview_tr1.html#math_toolkit.overview_tr1.supported_tr1_functions">Supported
+ TR1 Functions</a>
+ </h5>
+<p>
+ See also the <a class="link" href="main_tr1.html" title="C99 and TR1 C Functions Overview">quick reference guide for
+ these functions</a>.
+ </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">namespace</span> <span class="identifier">tr1</span><span class="special">{</span> <span class="keyword">extern</span> <span class="string">"C"</span><span class="special">{</span>
+
+<span class="comment">// [5.2.1.1] associated Laguerre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">assoc_laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">assoc_laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.2] associated Legendre functions:</span>
+<span class="keyword">double</span> <span class="identifier">assoc_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">assoc_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.3] beta function:</span>
+<span class="keyword">double</span> <span class="identifier">beta</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">betaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">betal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.4] (complete) elliptic integral of the first kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.5] (complete) elliptic integral of the second kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.6] (complete) elliptic integral of the third kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.8] regular modified cylindrical Bessel functions:</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_i</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_if</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_il</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.9] cylindrical Bessel functions (of the first kind):</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_jf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_jl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.10] irregular modified cylindrical Bessel functions:</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_k</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_kf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_kl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.11] cylindrical Neumann functions;</span>
+<span class="comment">// cylindrical Bessel functions (of the second kind):</span>
+<span class="keyword">double</span> <span class="identifier">cyl_neumann</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_neumannf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_neumannl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.12] (incomplete) elliptic integral of the first kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.13] (incomplete) elliptic integral of the second kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.14] (incomplete) elliptic integral of the third kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.15] exponential integral:</span>
+<span class="keyword">double</span> <span class="identifier">expint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">expintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.16] Hermite polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">hermite</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hermitef</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hermitel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.18] Laguerre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.19] Legendre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.20] Riemann zeta function:</span>
+<span class="keyword">double</span> <span class="identifier">riemann_zeta</span><span class="special">(</span><span class="keyword">double</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">riemann_zetaf</span><span class="special">(</span><span class="keyword">float</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">riemann_zetal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.21] spherical Bessel functions (of the first kind):</span>
+<span class="keyword">double</span> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_besself</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_bessell</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.22] spherical associated Legendre functions:</span>
+<span class="keyword">double</span> <span class="identifier">sph_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">theta</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.23] spherical Neumann functions;</span>
+<span class="comment">// spherical Bessel functions (of the second kind):</span>
+<span class="keyword">double</span> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_neumannf</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_neumannl</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="special">}}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ In addition sufficient additional overloads of the <code class="computeroutput"><span class="keyword">double</span></code>
+ versions of the above functions are provided, so that calling the function
+ with any mixture of <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code>, <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>, or <span class="emphasis"><em>integer</em></span>
+ arguments is supported, with the return type determined by the <a class="link" href="result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>.
+ </p>
+<h5>
+<a name="math_toolkit.overview_tr1.h3"></a>
+ <span class="phrase"><a name="math_toolkit.overview_tr1.currently_unsupported_c99_functi"></a></span><a class="link" href="overview_tr1.html#math_toolkit.overview_tr1.currently_unsupported_c99_functi">Currently
+ Unsupported C99 Functions</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">exp2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">exp2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">exp2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fdim</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fdimf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fdiml</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">fma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">z</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">fmaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">z</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fmal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">int</span> <span class="identifier">ilogb</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">int</span> <span class="identifier">ilogbf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">int</span> <span class="identifier">ilogbl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">log2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">log2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">log2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">logb</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">logbf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">logbl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">long</span> <span class="identifier">lrint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lrintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="identifier">lrintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nan</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nanf</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nanl</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">nearbyint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">nearbyintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nearbyintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">remainder</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">remainderf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">remainderl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">remquo</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">remquof</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">remquol</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">rint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">rintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">rintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">scalbln</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">scalblnf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">scalblnl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">scalbn</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">scalbnf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">scalbnl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span>
+</pre>
+<h5>
+<a name="math_toolkit.overview_tr1.h4"></a>
+ <span class="phrase"><a name="math_toolkit.overview_tr1.currently_unsupported_tr1_functi"></a></span><a class="link" href="overview_tr1.html#math_toolkit.overview_tr1.currently_unsupported_tr1_functi">Currently
+ Unsupported TR1 Functions</a>
+ </h5>
+<pre class="programlisting"><span class="comment">// [5.2.1.7] confluent hypergeometric functions:</span>
+<span class="keyword">double</span> <span class="identifier">conf_hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">conf_hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">conf_hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.17] hypergeometric functions:</span>
+<span class="keyword">double</span> <span class="identifier">hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="history1.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="main_faq.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/owens_t.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/owens_t.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,216 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Owen's T function</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="inv_hyper/atanh.html" title="atanh">
+<link rel="next" href="../utils.html" title="Chapter 4. Floating Point Utilities">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="inv_hyper/atanh.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../utils.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_owens_t">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.owens_t"></a><a class="link" href="owens_t.html" title="Owen's T function">Owen's T function</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.owens_t.h0"></a>
+ <span class="phrase"><a name="math_toolkit.owens_t.synopsis"></a></span><a class="link" href="owens_t.html#math_toolkit.owens_t.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.owens_t.h1"></a>
+ <span class="phrase"><a name="math_toolkit.owens_t.description"></a></span><a class="link" href="owens_t.html#math_toolkit.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="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy documentation
+ for more details</a>.
+ </p>
+<p>
+     <span class="inlinemediaobject"><img src="../../equations/owens_t.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../graphs/plot_owens_t.png"></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
+ > h and 0 < Y < 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 > 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"></span>
+ </p>
+<p>
+ This function is used in the computation of the <a class="link" href="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="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) = ½π arctan(a)</em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>T(h, 1) = ½ G(h) [1 - G(h)]</em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>T(h, ∞) = G(|h|)</em></span>
+ </p></blockquote></div>
+<p>
+ where G(h) is the univariate normal with zero mean and unit variance integral
+ from -∞ to h.
+ </p>
+<h5>
+<a name="math_toolkit.owens_t.h2"></a>
+ <span class="phrase"><a name="math_toolkit.owens_t.accuracy"></a></span><a class="link" href="owens_t.html#math_toolkit.owens_t.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Over the built-in types and range tested, errors are less than 10 * std::numeric_limits<RealType>::epsilon().
+ </p>
+<h5>
+<a name="math_toolkit.owens_t.h3"></a>
+ <span class="phrase"><a name="math_toolkit.owens_t.testing"></a></span><a class="link" href="owens_t.html#math_toolkit.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" style="list-style-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<RealType>::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 Wolfram Mathematica
+ and The R Project for Statistical Computing.
+ </p>
+<h5>
+<a name="math_toolkit.owens_t.h4"></a>
+ <span class="phrase"><a name="math_toolkit.owens_t.implementation"></a></span><a class="link" href="owens_t.html#math_toolkit.owens_t.implementation">Implementation</a>
+ </h5>
+<p>
+ The function was proposed and evaluated by <a href="http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&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" style="list-style-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 < 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 > 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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../utils.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/perf_over1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/perf_over1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Performance</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="threads.html" title="Thread Safety">
+<link rel="next" href="building.html" title="If and How to Build a Boost.Math Library, and its Examples and Tests">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="threads.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="building.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_perf_over1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.perf_over1"></a><a class="link" href="perf_over1.html" title="Performance">Performance</a>
+</h2></div></div></div>
+<p>
+ By and large the performance of this library should be acceptable for most
+ needs. However, you should note that this library's primary emphasis is on
+ accuracy and numerical stability, and <span class="emphasis"><em>not</em></span> speed.
+ </p>
+<p>
+ In terms of the algorithms used, this library aims to use the same "best
+ of breed" algorithms as many other libraries: the principle difference
+ is that this library is implemented in C++ - taking advantage of all the abstraction
+ mechanisms that C++ offers - where as most traditional numeric libraries are
+ implemented in C or FORTRAN. Traditionally languages such as C or FORTRAN are
+ perceived as easier to optimise than more complex languages like C++, so in
+ a sense this library provides a good test of current compiler technology, and
+ the "abstraction penalty" - if any - of C++ compared to other languages.
+ </p>
+<p>
+ The two most important things you can do to ensure the best performance from
+ this library are:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Turn on your compilers optimisations: the difference between "release"
+ and "debug" builds can easily be a <a class="link" href="getting_best.html" title="Getting the Best Performance from this Library">factor
+ of 20</a>.
+ </li>
+<li class="listitem">
+ Pick your compiler carefully: <a class="link" href="comp_compilers.html" title="Comparing Compilers">performance
+ differences of up to 8 fold</a> have been found between some Windows
+ compilers for example.
+ </li>
+</ol></div>
+<p>
+ The <a class="link" href="../perf.html" title="Chapter 14. Performance">performance section</a> contains more information
+ on the performance of this library, what you can do to fine tune it, and how
+ this library compares to some other open source alternatives.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="threads.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="building.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/perf_over2.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/perf_over2.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Performance Overview</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../perf.html" title="Chapter 14. Performance">
+<link rel="prev" href="../perf.html" title="Chapter 14. Performance">
+<link rel="next" href="interp.html" title="Interpreting these Results">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../perf.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="interp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_perf_over2">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.perf_over2"></a><a class="link" href="perf_over2.html" title="Performance Overview">Performance Overview</a>
+</h2></div></div></div>
+<p>
+ By and large the performance of this library should be acceptable for most
+ needs. However, you should note that this library's primary emphasis is on
+ accuracy and numerical stability, and <span class="emphasis"><em>not</em></span> speed.
+ </p>
+<p>
+ In terms of the algorithms used, this library aims to use the same "best
+ of breed" algorithms as many other libraries: the principle difference
+ is that this library is implemented in C++ - taking advantage of all the abstraction
+ mechanisms that C++ offers - where as most traditional numeric libraries are
+ implemented in C or FORTRAN. Traditionally languages such as C or FORTRAN are
+ perceived as easier to optimise than more complex languages like C++, so in
+ a sense this library provides a good test of current compiler technology, and
+ the "abstraction penalty" - if any - of C++ compared to other languages.
+ </p>
+<p>
+ The two most important things you can do to ensure the best performance from
+ this library are:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Turn on your compilers optimisations: the difference between "release"
+ and "debug" builds can easily be a <a class="link" href="getting_best.html" title="Getting the Best Performance from this Library">factor
+ of 20</a>.
+ </li>
+<li class="listitem">
+ Pick your compiler carefully: <a class="link" href="comp_compilers.html" title="Comparing Compilers">performance
+ differences of up to 8 fold</a> have been found between some Windows
+ compilers for example.
+ </li>
+</ol></div>
+<p>
+ The <a class="link" href="../perf.html" title="Chapter 14. Performance">performance section</a> contains more information
+ on the performance of this library, what you can do to fine tune it, and how
+ this library compares to some other open source alternatives.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../perf.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="interp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/perf_test_app.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/perf_test_app.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>The Performance Test Application</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../perf.html" title="Chapter 14. Performance">
+<link rel="prev" href="comparisons.html" title="Comparisons to Other Open Source Libraries">
+<link rel="next" href="../backgrounders.html" title="Chapter 15. Backgrounders">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="comparisons.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../backgrounders.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_perf_test_app">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.perf_test_app"></a><a class="link" href="perf_test_app.html" title="The Performance Test Application">The Performance Test Application</a>
+</h2></div></div></div>
+<p>
+ Under <span class="emphasis"><em>boost-path</em></span>/libs/math/performance you will find a
+ (fairly rudimentary) performance test application for this library.
+ </p>
+<p>
+ To run this application yourself, build the all the .cpp files in <span class="emphasis"><em>boost-path</em></span>/libs/math/performance
+ into an application using your usual release-build settings. Run the application
+ with --help to see a full list of options, or with --all to test everything
+ (which takes quite a while), or with --tune to test the <a class="link" href="tuning.html" title="Performance Tuning Macros">available
+ performance tuning options</a>.
+ </p>
+<p>
+ If you want to use this application to test the effect of changing any of the
+ <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policies</a>, then you will need to build and run
+ it twice: once with the default <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policies</a>, and
+ then a second time with the <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policies</a> you want
+ to test set as the default.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="comparisons.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../backgrounders.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_overview.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_overview.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,108 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Policy Overview</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">
+<link rel="prev" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">
+<link rel="next" href="pol_tutorial.html" title="Policy Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../policy.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../policy.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="pol_tutorial.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_overview">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.pol_overview"></a><a class="link" href="pol_overview.html" title="Policy Overview">Policy Overview</a>
+</h2></div></div></div>
+<p>
+ Policies are a powerful fine-grain mechanism that allow you to customise the
+ behaviour of this library according to your needs. There is more information
+ available in the <a class="link" href="pol_tutorial.html" title="Policy Tutorial">policy tutorial</a>
+ and the <a class="link" href="pol_ref.html" title="Policy Reference">policy reference</a>.
+ </p>
+<p>
+ Generally speaking, unless you find that the <a class="link" href="pol_tutorial/policy_tut_defaults.html" title="Policies Have Sensible Defaults">default
+ policy behaviour</a> when encountering 'bad' argument values does not meet
+ your needs, you should not need to worry about policies.
+ </p>
+<p>
+ Policies are a compile-time mechanism that allow you to change error-handling
+ or calculation precision either program wide, or at the call site.
+ </p>
+<p>
+ Although the policy mechanism itself is rather complicated, in practice it
+ is easy to use, and very flexible.
+ </p>
+<p>
+ Using policies you can control:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="pol_ref/error_handling_policies.html" title="Error Handling Policies">How results
+ from 'bad' arguments are handled</a>, including those that cannot be
+ fully evaluated.
+ </li>
+<li class="listitem">
+ How <a class="link" href="pol_ref/internal_promotion.html" title="Internal Floating-point Promotion Policies">accuracy is
+ controlled by internal promotion</a> to use more precise types.
+ </li>
+<li class="listitem">
+ What working <a class="link" href="pol_ref/precision_pol.html" title="Precision Policies">precision</a>
+ should be used to calculate results.
+ </li>
+<li class="listitem">
+ What to do when a <a class="link" href="pol_ref/assert_undefined.html" title="Mathematically Undefined Function Policies">mathematically
+ undefined function</a> is used: Should this raise a run-time or compile-time
+ error?
+ </li>
+<li class="listitem">
+ Whether <a class="link" href="pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">discrete
+ functions</a>, like the binomial, should return real or only integral
+ values, and how they are rounded.
+ </li>
+<li class="listitem">
+ How many iterations a special function is permitted to perform in a series
+ evaluation or root finding algorithm before it gives up and raises an
+ <a class="link" href="error_handling.html#math_toolkit.error_handling.evaluation_error">evaluation_error</a>.
+ </li>
+</ul></div>
+<p>
+ You can control policies:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Using <a class="link" href="pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults">macros</a>
+ to change any default policy: the is the prefered method for installation
+ wide policies.
+ </li>
+<li class="listitem">
+ At your chosen <a class="link" href="pol_ref/namespace_pol.html" title="Setting Polices at Namespace Scope">namespace
+ scope</a> for distributions and/or functions: this is the prefered method
+ for project, namespace, or translation unit scope policies.
+ </li>
+<li class="listitem">
+ In an ad-hoc manner <a class="link" href="pol_tutorial/ad_hoc_sf_policies.html" title="Changing the Policy on an Ad Hoc Basis for the Special Functions">by
+ passing a specific policy to a special function</a>, or to a <a class="link" href="pol_tutorial/ad_hoc_dist_policies.html" title="Setting Policies for Distributions on an Ad Hoc Basis">statistical
+ distribution</a>.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../policy.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../policy.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="pol_tutorial.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Policy Reference</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">
+<link rel="prev" href="pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">
+<link rel="next" href="pol_ref/error_handling_policies.html" title="Error Handling Policies">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="pol_tutorial/understand_dis_quant.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../policy.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="pol_ref/error_handling_policies.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.pol_ref"></a><a class="link" href="pol_ref.html" title="Policy Reference">Policy Reference</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="pol_ref/error_handling_policies.html">Error Handling
+ Policies</a></span></dt>
+<dt><span class="section"><a href="pol_ref/internal_promotion.html">Internal Floating-point
+ Promotion Policies</a></span></dt>
+<dt><span class="section"><a href="pol_ref/assert_undefined.html">Mathematically
+ Undefined Function Policies</a></span></dt>
+<dt><span class="section"><a href="pol_ref/discrete_quant_ref.html">Discrete Quantile
+ Policies</a></span></dt>
+<dt><span class="section">Precision Policies</span></dt>
+<dt><span class="section"><a href="pol_ref/iteration_pol.html">Iteration Limits
+ Policies</a></span></dt>
+<dt><span class="section"><a href="pol_ref/policy_defaults.html">Using Macros to
+ Change the Policy Defaults</a></span></dt>
+<dt><span class="section"><a href="pol_ref/namespace_pol.html">Setting Polices at
+ Namespace Scope</a></span></dt>
+<dt><span class="section">Policy Class Reference</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="pol_tutorial/understand_dis_quant.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../policy.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="pol_ref/error_handling_policies.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/assert_undefined.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/assert_undefined.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,92 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Mathematically Undefined Function Policies</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_ref.html" title="Policy Reference">
+<link rel="prev" href="internal_promotion.html" title="Internal Floating-point Promotion Policies">
+<link rel="next" href="discrete_quant_ref.html" title="Discrete Quantile Policies">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="internal_promotion.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="discrete_quant_ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref_assert_undefined">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_ref.assert_undefined"></a><a class="link" href="assert_undefined.html" title="Mathematically Undefined Function Policies">Mathematically
+ Undefined Function Policies</a>
+</h3></div></div></div>
+<p>
+ There are some functions that are generic (they are present for all the statistical
+ distributions supported) but which may be mathematically undefined for certain
+ distributions, but defined for others.
+ </p>
+<p>
+ For example, the Cauchy distribution does not have a meaningful mean, so
+ what should
+ </p>
+<pre class="programlisting"><span class="identifier">mean</span><span class="special">(</span><span class="identifier">cauchy</span><span class="special"><>());</span>
+</pre>
+<p>
+ return, and should such an expression even compile at all?
+ </p>
+<p>
+ The default behaviour is for all such functions to not compile at all - in
+ fact they will raise a <a href="http://www.boost.org/libs/static_assert/index.html" target="_top">static
+ assertion</a> - but by changing the policy we can have them return the
+ result of a domain error instead (which may well throw an exception, depending
+ on the error handling policy).
+ </p>
+<p>
+ This behaviour is controlled by the <code class="computeroutput"><span class="identifier">assert_undefined</span><span class="special"><></span></code> policy:
+ </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">namespace</span> <span class="identifier">policies</span> <span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">bool</span> <span class="identifier">b</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">assert_undefined</span><span class="special">;</span>
+
+<span class="special">}}}</span> <span class="comment">//namespaces</span>
+</pre>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">cauchy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+
+<span class="comment">// This will not compile, cauchy has no mean!</span>
+<span class="keyword">double</span> <span class="identifier">m1</span> <span class="special">=</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">cauchy</span><span class="special">());</span>
+
+<span class="comment">// This will compile, but raises a domain error!</span>
+<span class="keyword">double</span> <span class="identifier">m2</span> <span class="special">=</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">cauchy_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">assert_undefined</span><span class="special"><</span><span class="keyword">false</span><span class="special">></span> <span class="special">></span> <span class="special">>());</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="identifier">policy</span><span class="special"><</span><span class="identifier">assert_undefined</span><span class="special"><</span><span class="keyword">false</span><span class="special">></span></code>
+ behaviour can also be obtained by defining the macro
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_ASSERT_UNDEFINED_POLICY</span> <span class="keyword">false</span>
+</pre>
+<p>
+ at the head of the file - see <a class="link" href="policy_defaults.html" title="Using Macros to Change the Policy Defaults">Using
+ Macros to Change the Policy Defaults</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="internal_promotion.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="discrete_quant_ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/discrete_quant_ref.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/discrete_quant_ref.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,242 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Discrete Quantile Policies</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_ref.html" title="Policy Reference">
+<link rel="prev" href="assert_undefined.html" title="Mathematically Undefined Function Policies">
+<link rel="next" href="precision_pol.html" title="Precision Policies">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="assert_undefined.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="precision_pol.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref_discrete_quant_ref">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_ref.discrete_quant_ref"></a><a class="link" href="discrete_quant_ref.html" title="Discrete Quantile Policies">Discrete Quantile
+ Policies</a>
+</h3></div></div></div>
+<p>
+ If a statistical distribution is <span class="emphasis"><em>discrete</em></span> then the random
+ variable can only have integer values - this leaves us with a problem when
+ calculating quantiles - we can either ignore the discreteness of the distribution
+ and return a real value, or we can round to an integer. As it happens, computing
+ integer values can be substantially faster than calculating a real value,
+ so there are definite advantages to returning an integer, but we do then
+ need to decide how best to round the result. The <code class="computeroutput"><span class="identifier">discrete_quantile</span></code>
+ policy defines how discrete quantiles work, and how integer results are rounded:
+ </p>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="identifier">discrete_quantile_policy_type</span>
+<span class="special">{</span>
+ <span class="identifier">real</span><span class="special">,</span>
+ <span class="identifier">integer_round_outwards</span><span class="special">,</span> <span class="comment">// default</span>
+ <span class="identifier">integer_round_inwards</span><span class="special">,</span>
+ <span class="identifier">integer_round_down</span><span class="special">,</span>
+ <span class="identifier">integer_round_up</span><span class="special">,</span>
+ <span class="identifier">integer_round_nearest</span>
+<span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="identifier">discrete_quantile_policy_type</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">discrete_quantile</span><span class="special">;</span>
+</pre>
+<p>
+ The values that <code class="computeroutput"><span class="identifier">discrete_quantile</span></code>
+ can take have the following meanings:
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.discrete_quant_ref.h0"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.discrete_quant_ref.real"></a></span><a class="link" href="discrete_quant_ref.html#math_toolkit.pol_ref.discrete_quant_ref.real">real</a>
+ </h6>
+<p>
+ Ignores the discreteness of the distribution, and returns a real-valued result.
+ For example:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial_distribution</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">negative_binomial_distribution</span><span class="special"><</span>
+ <span class="keyword">double</span><span class="special">,</span>
+ <span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">real</span><span class="special">></span> <span class="special">></span>
+ <span class="special">></span> <span class="identifier">dist_type</span><span class="special">;</span>
+
+<span class="comment">// Lower 5% quantile:</span>
+<span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">dist_type</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.3</span><span class="special">),</span> <span class="number">0.05</span><span class="special">);</span>
+<span class="comment">// Upper 95% quantile:</span>
+<span class="keyword">double</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist_type</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.3</span><span class="special">),</span> <span class="number">0.05</span><span class="special">));</span>
+</pre>
+<p>
+ Results in <code class="computeroutput"><span class="identifier">x</span> <span class="special">=</span>
+ <span class="number">27.3898</span></code> and <code class="computeroutput"><span class="identifier">y</span>
+ <span class="special">=</span> <span class="number">68.1584</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.discrete_quant_ref.h1"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.discrete_quant_ref.integer_round_outwards"></a></span><a class="link" href="discrete_quant_ref.html#math_toolkit.pol_ref.discrete_quant_ref.integer_round_outwards">integer_round_outwards</a>
+ </h6>
+<p>
+ This is the default policy: an integer value is returned so that:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Lower quantiles (where the probability is less than 0.5) are rounded
+ down.
+ </li>
+<li class="listitem">
+ Upper quantiles (where the probability is greater than 0.5) are rounded
+ up.
+ </li>
+</ul></div>
+<p>
+ This is normally the safest rounding policy, since it ensures that both one
+ and two sided intervals are guaranteed to have <span class="emphasis"><em>at least</em></span>
+ the requested coverage. For example:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial</span><span class="special">;</span>
+
+<span class="comment">// Use the default rounding policy integer_round_outwards.</span>
+<span class="comment">// Lower quantile rounded down:</span>
+<span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.3</span><span class="special">),</span> <span class="number">0.05</span><span class="special">);</span> <span class="comment">// rounded up 27 from 27.3898</span>
+<span class="comment">// Upper quantile rounded up:</span>
+<span class="keyword">double</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.3</span><span class="special">),</span> <span class="number">0.05</span><span class="special">));</span> <span class="comment">// rounded down to 69 from 68.1584</span>
+</pre>
+<p>
+ Results in <code class="computeroutput"><span class="identifier">x</span> <span class="special">=</span>
+ <span class="number">27</span></code> (rounded down from 27.3898) and
+ <code class="computeroutput"><span class="identifier">y</span> <span class="special">=</span>
+ <span class="number">69</span></code> (rounded up from 68.1584).
+ </p>
+<p>
+ The variables x and y are now defined so that:
+ </p>
+<pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="number">20</span><span class="special">),</span> <span class="identifier">x</span><span class="special">)</span> <span class="special"><=</span> <span class="number">0.05</span>
+<span class="identifier">cdf</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="number">20</span><span class="special">),</span> <span class="identifier">y</span><span class="special">)</span> <span class="special">>=</span> <span class="number">0.95</span>
+</pre>
+<p>
+ In other words we guarantee <span class="emphasis"><em>at least 90% coverage in the central
+ region overall</em></span>, and also <span class="emphasis"><em>no more than 5% coverage in
+ each tail</em></span>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.discrete_quant_ref.h2"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.discrete_quant_ref.integer_round_inwards"></a></span><a class="link" href="discrete_quant_ref.html#math_toolkit.pol_ref.discrete_quant_ref.integer_round_inwards">integer_round_inwards</a>
+ </h6>
+<p>
+ This is the opposite of <span class="emphasis"><em>integer_round_outwards</em></span>: an integer
+ value is returned so that:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Lower quantiles (where the probability is less than 0.5) are rounded
+ <span class="emphasis"><em>up</em></span>.
+ </li>
+<li class="listitem">
+ Upper quantiles (where the probability is greater than 0.5) are rounded
+ <span class="emphasis"><em>down</em></span>.
+ </li>
+</ul></div>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial_distribution</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">negative_binomial_distribution</span><span class="special"><</span>
+ <span class="keyword">double</span><span class="special">,</span>
+ <span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_inwards</span><span class="special">></span> <span class="special">></span>
+ <span class="special">></span> <span class="identifier">dist_type</span><span class="special">;</span>
+
+<span class="comment">// Lower quantile rounded up:</span>
+<span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">dist_type</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.3</span><span class="special">),</span> <span class="number">0.05</span><span class="special">);</span> <span class="comment">// 28 rounded up from 27.3898</span>
+<span class="comment">// Upper quantile rounded down:</span>
+<span class="keyword">double</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist_type</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.3</span><span class="special">),</span> <span class="number">0.05</span><span class="special">));</span> <span class="comment">// 68 rounded down from 68.1584</span>
+</pre>
+<p>
+ Results in <code class="computeroutput"><span class="identifier">x</span> <span class="special">=</span>
+ <span class="number">28</span></code> (rounded up from 27.3898) and <code class="computeroutput"><span class="identifier">y</span> <span class="special">=</span> <span class="number">68</span></code>
+ (rounded down from 68.1584).
+ </p>
+<p>
+ The variables x and y are now defined so that:
+ </p>
+<pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="number">20</span><span class="special">),</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">>=</span> <span class="number">0.05</span>
+<span class="identifier">cdf</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">(</span><span class="number">20</span><span class="special">),</span> <span class="identifier">y</span><span class="special">)</span> <span class="special"><=</span> <span class="number">0.95</span>
+</pre>
+<p>
+ In other words we guarantee <span class="emphasis"><em>at no more than 90% coverage in the
+ central region overall</em></span>, and also <span class="emphasis"><em>at least 5% coverage
+ in each tail</em></span>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.discrete_quant_ref.h3"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.discrete_quant_ref.integer_round_down"></a></span><a class="link" href="discrete_quant_ref.html#math_toolkit.pol_ref.discrete_quant_ref.integer_round_down">integer_round_down</a>
+ </h6>
+<p>
+ Always rounds down to an integer value, no matter whether it's an upper or
+ a lower quantile.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.discrete_quant_ref.h4"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.discrete_quant_ref.integer_round_up"></a></span><a class="link" href="discrete_quant_ref.html#math_toolkit.pol_ref.discrete_quant_ref.integer_round_up">integer_round_up</a>
+ </h6>
+<p>
+ Always rounds up to an integer value, no matter whether it's an upper or
+ a lower quantile.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.discrete_quant_ref.h5"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.discrete_quant_ref.integer_round_nearest"></a></span><a class="link" href="discrete_quant_ref.html#math_toolkit.pol_ref.discrete_quant_ref.integer_round_nearest">integer_round_nearest</a>
+ </h6>
+<p>
+ Always rounds to the nearest integer value, no matter whether it's an upper
+ or a lower quantile. This will produce the requested coverage <span class="emphasis"><em>in
+ the average case</em></span>, but for any specific example may results in
+ either significantly more or less coverage than the requested amount. For
+ example:
+ </p>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial_distribution</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">negative_binomial_distribution</span><span class="special"><</span>
+ <span class="keyword">double</span><span class="special">,</span>
+ <span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_nearest</span><span class="special">></span> <span class="special">></span>
+ <span class="special">></span> <span class="identifier">dist_type</span><span class="special">;</span>
+
+<span class="comment">// Lower quantile rounded (down) to nearest:</span>
+<span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">dist_type</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.3</span><span class="special">),</span> <span class="number">0.05</span><span class="special">);</span> <span class="comment">// 27</span>
+<span class="comment">// Upper quantile rounded (down) to nearest:</span>
+<span class="keyword">double</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist_type</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.3</span><span class="special">),</span> <span class="number">0.05</span><span class="special">));</span> <span class="comment">// 68</span>
+</pre>
+<p>
+ Results in <code class="computeroutput"><span class="identifier">x</span> <span class="special">=</span>
+ <span class="number">27</span></code> (rounded from 27.3898) and <code class="computeroutput"><span class="identifier">y</span> <span class="special">=</span> <span class="number">68</span></code>
+ (rounded from 68.1584).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="assert_undefined.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="precision_pol.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/error_handling_policies.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/error_handling_policies.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,763 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Error Handling Policies</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_ref.html" title="Policy Reference">
+<link rel="prev" href="../pol_ref.html" title="Policy Reference">
+<link rel="next" href="internal_promotion.html" title="Internal Floating-point Promotion Policies">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../pol_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="internal_promotion.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref_error_handling_policies">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_ref.error_handling_policies"></a><a class="link" href="error_handling_policies.html" title="Error Handling Policies">Error Handling
+ Policies</a>
+</h3></div></div></div>
+<p>
+ There are two orthogonal aspects to error handling:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ What to do (if anything) with the error.
+ </li>
+<li class="listitem">
+ What kind of error is being raised.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.pol_ref.error_handling_policies.h0"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.error_handling_policies.available_actions_when_an_error_"></a></span><a class="link" href="error_handling_policies.html#math_toolkit.pol_ref.error_handling_policies.available_actions_when_an_error_">Available
+ Actions When an Error is Raised</a>
+ </h5>
+<p>
+ What to do with the error is encapsulated by an enumerated type:
+ </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">namespace</span> <span class="identifier">policies</span> <span class="special">{</span>
+
+<span class="keyword">enum</span> <span class="identifier">error_policy_type</span>
+<span class="special">{</span>
+ <span class="identifier">throw_on_error</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="comment">// throw an exception.</span>
+ <span class="identifier">errno_on_error</span> <span class="special">=</span> <span class="number">1</span><span class="special">,</span> <span class="comment">// set ::errno & return 0, NaN, infinity or best guess.</span>
+ <span class="identifier">ignore_error</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span> <span class="comment">// return 0, NaN, infinity or best guess.</span>
+ <span class="identifier">user_error</span> <span class="special">=</span> <span class="number">3</span> <span class="comment">// call a user-defined error handler.</span>
+<span class="special">};</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The various enumerated values have the following meanings:
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.error_handling_policies.h1"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.error_handling_policies.throw_on_error"></a></span><a class="link" href="error_handling_policies.html#math_toolkit.pol_ref.error_handling_policies.throw_on_error">throw_on_error</a>
+ </h6>
+<p>
+ Will throw one of the following exceptions, depending upon the type of the
+ error:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Error Type
+ </p>
+ </th>
+<th>
+ <p>
+ Exception
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Domain Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::domain_error
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pole Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::domain_error
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Overflow Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::overflow_error
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Underflow Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::underflow_error
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Denorm Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::underflow_error
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Evaluation Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::evaluation_error
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indeterminate Result Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::domain_error
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="math_toolkit.pol_ref.error_handling_policies.h2"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.error_handling_policies.errno_on_error"></a></span><a class="link" href="error_handling_policies.html#math_toolkit.pol_ref.error_handling_policies.errno_on_error">errno_on_error</a>
+ </h6>
+<p>
+ Will set global ::errno
+ <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to one of the following values depending upon the error type (often EDOM
+ = 33 and ERANGE = 34), and then return the same value as if the error had
+ been ignored:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Error Type
+ </p>
+ </th>
+<th>
+ <p>
+ errno value
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Domain Error
+ </p>
+ </td>
+<td>
+ <p>
+ EDOM
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pole Error
+ </p>
+ </td>
+<td>
+ <p>
+ EDOM
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Overflow Error
+ </p>
+ </td>
+<td>
+ <p>
+ ERANGE
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Underflow Error
+ </p>
+ </td>
+<td>
+ <p>
+ ERANGE
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Denorm Error
+ </p>
+ </td>
+<td>
+ <p>
+ ERANGE
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Evaluation Error
+ </p>
+ </td>
+<td>
+ <p>
+ EDOM
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indeterminate Result Error
+ </p>
+ </td>
+<td>
+ <p>
+ EDOM
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="math_toolkit.pol_ref.error_handling_policies.h3"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.error_handling_policies.ignore_error"></a></span><a class="link" href="error_handling_policies.html#math_toolkit.pol_ref.error_handling_policies.ignore_error">ignore_error</a>
+ </h6>
+<p>
+ Will return one of the values below depending on the error type (<code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ is NOT changed)::
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Error Type
+ </p>
+ </th>
+<th>
+ <p>
+ Returned Value
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Domain Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::numeric_limits<T>::quiet_NaN()
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pole Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::numeric_limits<T>::quiet_NaN()
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Overflow Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::numeric_limits<T>::infinity()
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Underflow Error
+ </p>
+ </td>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Denorm Error
+ </p>
+ </td>
+<td>
+ <p>
+ The denormalised value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Evaluation Error
+ </p>
+ </td>
+<td>
+ <p>
+ The best guess (perhaps NaN) as to the result: which may be significantly
+ in error.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indeterminate Result Error
+ </p>
+ </td>
+<td>
+ <p>
+ Depends on the function where the error occurred
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="math_toolkit.pol_ref.error_handling_policies.h4"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.error_handling_policies.user_error"></a></span><a class="link" href="error_handling_policies.html#math_toolkit.pol_ref.error_handling_policies.user_error">user_error</a>
+ </h6>
+<p>
+ Will call a user defined error handler: these are forward declared in boost/math/policies/error_handling.hpp,
+ but the actual definitions must be provided by the user:
+ </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">namespace</span> <span class="identifier">policies</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_domain_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_pole_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_overflow_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_underflow_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_denorm_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_rounding_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_evaluation_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_indeterminate_result_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Note that the strings <span class="emphasis"><em>function</em></span> and <span class="emphasis"><em>message</em></span>
+ may contain "%1%" format specifiers designed to be used in conjunction
+ with Boost.Format. If these strings are to be presented to the program's
+ end-user then the "%1%" format specifier should be replaced with
+ the name of type T in the <span class="emphasis"><em>function</em></span> string, and if there
+ is a %1% specifier in the <span class="emphasis"><em>message</em></span> string then it should
+ be replaced with the value of <span class="emphasis"><em>val</em></span>.
+ </p>
+<p>
+ There is more information on user-defined error handlers in the <a class="link" href="../pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">tutorial
+ here</a>.
+ </p>
+<h5>
+<a name="math_toolkit.pol_ref.error_handling_policies.h5"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.error_handling_policies.kinds_of_error_raised"></a></span><a class="link" href="error_handling_policies.html#math_toolkit.pol_ref.error_handling_policies.kinds_of_error_raised">Kinds
+ of Error Raised</a>
+ </h5>
+<p>
+ There are six kinds of error reported by this library, which are summarised
+ in the following table:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Error Type
+ </p>
+ </th>
+<th>
+ <p>
+ Policy Class
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Domain Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::policies::domain_error<<span class="emphasis"><em>action</em></span>>
+ </p>
+ </td>
+<td>
+ <p>
+ Raised when more or more arguments are outside the defined range
+ of the function.
+ </p>
+ <p>
+ Defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">throw_on_error</span><span class="special">></span></code>
+ </p>
+ <p>
+ When the action is set to <span class="emphasis"><em>throw_on_error</em></span> then
+ throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pole Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::policies::pole_error<<span class="emphasis"><em>action</em></span>>
+ </p>
+ </td>
+<td>
+ <p>
+ Raised when more or more arguments would cause the function to
+ be evaluated at a pole.
+ </p>
+ <p>
+ Defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">throw_on_error</span><span class="special">></span></code>
+ </p>
+ <p>
+ When the action is <span class="emphasis"><em>throw_on_error</em></span> then throw
+ a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Overflow Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::policies::overflow_error<<span class="emphasis"><em>action</em></span>>
+ </p>
+ </td>
+<td>
+ <p>
+ Raised when the result of the function is outside the representable
+ range of the floating point type used.
+ </p>
+ <p>
+ Defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">throw_on_error</span><span class="special">></span></code>.
+ </p>
+ <p>
+ When the action is <span class="emphasis"><em>throw_on_error</em></span> then throws
+ a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Underflow Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::policies::underflow_error<<span class="emphasis"><em>action</em></span>>
+ </p>
+ </td>
+<td>
+ <p>
+ Raised when the result of the function is too small to be represented
+ in the floating point type used.
+ </p>
+ <p>
+ Defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">underflow_error</span><span class="special"><</span><span class="identifier">ignore_error</span><span class="special">></span></code>
+ </p>
+ <p>
+ When the specified action is <span class="emphasis"><em>throw_on_error</em></span>
+ then throws a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Denorm Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::policies::denorm_error<<span class="emphasis"><em>action</em></span>>
+ </p>
+ </td>
+<td>
+ <p>
+ Raised when the result of the function is a denormalised value.
+ </p>
+ <p>
+ Defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">denorm_error</span><span class="special"><</span><span class="identifier">ignore_error</span><span class="special">></span></code>
+ </p>
+ <p>
+ When the action is <span class="emphasis"><em>throw_on_error</em></span> then throws
+ a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Rounding Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::policies::rounding_error<<span class="emphasis"><em>action</em></span>>
+ </p>
+ </td>
+<td>
+ <p>
+ Raised When one of the rounding functions <a class="link" href="../rounding/round.html" title="Rounding Functions">round</a>,
+ <a class="link" href="../rounding/trunc.html" title="Truncation Functions">trunc</a> or <a class="link" href="../rounding/modf.html" title="Integer and Fractional Part Splitting (modf)">modf</a> is called with
+ an argument that has no integer representation, or is too large
+ to be represented in the result type
+ </p>
+ <p>
+ Defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">rounding_error</span><span class="special"><</span><span class="identifier">throw_on_error</span><span class="special">></span></code>
+ </p>
+ <p>
+ When the action is <span class="emphasis"><em>throw_on_error</em></span> then throws
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">rounding_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Evaluation Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::policies::evaluation_error<<span class="emphasis"><em>action</em></span>>
+ </p>
+ </td>
+<td>
+ <p>
+ Raised when the result of the function is well defined and finite,
+ but we were unable to compute it. Typically this occurs when an
+ iterative method fails to converge. Of course ideally this error
+ should never be raised: feel free to report it as a bug if it is!
+ </p>
+ <p>
+ Defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">throw_on_error</span><span class="special">></span></code>
+ </p>
+ <p>
+ When the action is <span class="emphasis"><em>throw_on_error</em></span> then throws
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">evaluation_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indeterminate Result Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::policies::indeterminate_result_error<<span class="emphasis"><em>action</em></span>>
+ </p>
+ </td>
+<td>
+ <p>
+ Raised when the result of a function is not defined for the values
+ that were passed to it.
+ </p>
+ <p>
+ Defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">indeterminate_result_error</span><span class="special"><</span><span class="identifier">ignore_error</span><span class="special">></span></code>
+ </p>
+ <p>
+ When the action is <span class="emphasis"><em>throw_on_error</em></span> then throws
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.pol_ref.error_handling_policies.h6"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.error_handling_policies.examples"></a></span><a class="link" href="error_handling_policies.html#math_toolkit.pol_ref.error_handling_policies.examples">Examples</a>
+ </h5>
+<p>
+ Suppose we want a call to <code class="computeroutput"><span class="identifier">tgamma</span></code>
+ to behave in a C-compatible way and set global <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> rather than throw an exception, we
+ can achieve this at the call site using:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">;</span>
+
+<span class="comment">//using namespace boost::math::policies; may also be convenient.</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">evaluation_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">overflow_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">pole_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">errno_on_error</span><span class="special">;</span>
+
+<span class="comment">// Define a policy:</span>
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">></span>
+<span class="special">></span> <span class="identifier">my_policy</span><span class="special">;</span>
+
+<span class="keyword">double</span> <span class="identifier">my_value</span> <span class="special">=</span> <span class="number">0.</span><span class="special">;</span> <span class="comment">// </span>
+
+<span class="comment">// Call the function applying my_policy:</span>
+<span class="keyword">double</span> <span class="identifier">t1</span> <span class="special">=</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">my_value</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">());</span>
+
+<span class="comment">// Alternatively (and equivalently) we could use helpful function</span>
+<span class="comment">// make_policy and define everything at the call site:</span>
+<span class="keyword">double</span> <span class="identifier">t2</span> <span class="special">=</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">my_value</span><span class="special">,</span>
+ <span class="identifier">make_policy</span><span class="special">(</span>
+ <span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>(),</span>
+ <span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>(),</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>(),</span>
+ <span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>()</span> <span class="special">)</span>
+ <span class="special">);</span>
+</pre>
+<p>
+ Suppose we want a statistical distribution to return infinities, rather than
+ throw exceptions, then we can use:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="comment">// Define a specific policy:</span>
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">ignore_error</span><span class="special">></span>
+ <span class="special">></span> <span class="identifier">my_policy</span><span class="special">;</span>
+
+<span class="comment">// Define the distribution, using my_policy:</span>
+<span class="keyword">typedef</span> <span class="identifier">normal_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">></span> <span class="identifier">my_norm</span><span class="special">;</span>
+
+<span class="comment">// Construct a my_norm distribution, using default mean and standard deviation,</span>
+<span class="comment">// and get a 0.05 or 5% quantile:</span>
+<span class="keyword">double</span> <span class="identifier">q</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">my_norm</span><span class="special">(),</span> <span class="number">0.05</span><span class="special">);</span> <span class="comment">// = -1.64485</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../pol_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="internal_promotion.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/internal_promotion.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/internal_promotion.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,140 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Internal Floating-point Promotion Policies</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_ref.html" title="Policy Reference">
+<link rel="prev" href="error_handling_policies.html" title="Error Handling Policies">
+<link rel="next" href="assert_undefined.html" title="Mathematically Undefined Function Policies">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="error_handling_policies.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="assert_undefined.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref_internal_promotion">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_ref.internal_promotion"></a><a class="link" href="internal_promotion.html" title="Internal Floating-point Promotion Policies">Internal Floating-point
+ Promotion Policies</a>
+</h3></div></div></div>
+<p>
+ Normally when evaluating a function at say <code class="computeroutput"><span class="keyword">float</span></code>
+ precision, maximal accuracy is assured by conducting the calculation at
+ <code class="computeroutput"><span class="keyword">double</span></code> precision internally,
+ and then rounding the result. There are two policies that control whether
+ internal promotion to a higher precision floating-point type takes place,
+ or not:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Policy
+ </p>
+ </th>
+<th>
+ <p>
+ Meaning
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">promote_float</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Indicates whether <code class="computeroutput"><span class="keyword">float</span></code>
+ arguments should be promoted to <code class="computeroutput"><span class="keyword">double</span></code>
+ precision internally: defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">promote_float</span><span class="special"><</span><span class="keyword">true</span><span class="special">></span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">promote_double</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Indicates whether <code class="computeroutput"><span class="keyword">double</span></code>
+ arguments should be promoted to <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> precision internally:
+ defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">promote_double</span><span class="special"><</span><span class="keyword">true</span><span class="special">></span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.pol_ref.internal_promotion.h0"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.internal_promotion.examples"></a></span><a class="link" href="internal_promotion.html#math_toolkit.pol_ref.internal_promotion.examples">Examples</a>
+ </h5>
+<p>
+ Suppose we want <code class="computeroutput"><span class="identifier">tgamma</span></code> to
+ be evaluated without internal promotion to <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>, then we could use:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">;</span>
+
+<span class="comment">// Define a new policy *not* internally promoting RealType to double:</span>
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">promote_double</span><span class="special"><</span><span class="keyword">false</span><span class="special">></span>
+ <span class="special">></span> <span class="identifier">my_policy</span><span class="special">;</span>
+
+<span class="comment">// Call the function, applying the new policy:</span>
+<span class="keyword">double</span> <span class="identifier">t1</span> <span class="special">=</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">some_value</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">());</span>
+
+<span class="comment">// Alternatively we could use helper function make_policy,</span>
+<span class="comment">// and concisely define everything at the call site:</span>
+<span class="keyword">double</span> <span class="identifier">t2</span> <span class="special">=</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">some_value</span><span class="special">,</span> <span class="identifier">make_policy</span><span class="special">(</span><span class="identifier">promote_double</span><span class="special"><</span><span class="keyword">false</span><span class="special">>()));</span>
+</pre>
+<p>
+ Alternatively, suppose we want a distribution to perform calculations without
+ promoting <code class="computeroutput"><span class="keyword">float</span></code> to <code class="computeroutput"><span class="keyword">double</span></code>, then we could use:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="comment">// Define a policy:</span>
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">promote_float</span><span class="special"><</span><span class="keyword">false</span><span class="special">></span>
+ <span class="special">></span> <span class="identifier">my_policy</span><span class="special">;</span>
+
+<span class="comment">// Define the new normal distribution using my_policy:</span>
+<span class="keyword">typedef</span> <span class="identifier">normal_distribution</span><span class="special"><</span><span class="keyword">float</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">></span> <span class="identifier">my_norm</span><span class="special">;</span>
+
+<span class="comment">// Get a quantile:</span>
+<span class="keyword">float</span> <span class="identifier">q</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">my_norm</span><span class="special">(),</span> <span class="number">0.05f</span><span class="special">);</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="error_handling_policies.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="assert_undefined.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/iteration_pol.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/iteration_pol.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,57 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Iteration Limits Policies</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_ref.html" title="Policy Reference">
+<link rel="prev" href="precision_pol.html" title="Precision Policies">
+<link rel="next" href="policy_defaults.html" title="Using Macros to Change the Policy Defaults">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="precision_pol.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="policy_defaults.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref_iteration_pol">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_ref.iteration_pol"></a><a class="link" href="iteration_pol.html" title="Iteration Limits Policies">Iteration Limits
+ Policies</a>
+</h3></div></div></div>
+<p>
+ There are two policies that effect the iterative algorithms used to implement
+ the special functions in this library:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="identifier">limit</span> <span class="special">=</span> <span class="identifier">BOOST_MATH_MAX_SERIES_ITERATION_POLICY</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">max_series_iterations</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="identifier">limit</span> <span class="special">=</span> <span class="identifier">BOOST_MATH_MAX_ROOT_ITERATION_POLICY</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">max_root_iterations</span><span class="special">;</span>
+</pre>
+<p>
+ The class <code class="computeroutput"><span class="identifier">max_series_iterations</span></code>
+ determines the maximum number of iterations permitted in a series evaluation,
+ before the special function gives up and returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.evaluation_error">evaluation_error</a>.
+ </p>
+<p>
+ The class <code class="computeroutput"><span class="identifier">max_root_iterations</span></code>
+ determines the maximum number of iterations permitted in a root-finding algorithm
+ before the special function gives up and returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.evaluation_error">evaluation_error</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="precision_pol.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="policy_defaults.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/namespace_pol.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/namespace_pol.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,147 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Setting Polices at Namespace Scope</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_ref.html" title="Policy Reference">
+<link rel="prev" href="policy_defaults.html" title="Using Macros to Change the Policy Defaults">
+<link rel="next" href="pol_ref_ref.html" title="Policy Class Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="policy_defaults.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="pol_ref_ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref_namespace_pol">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_ref.namespace_pol"></a><a class="link" href="namespace_pol.html" title="Setting Polices at Namespace Scope">Setting Polices at
+ Namespace Scope</a>
+</h3></div></div></div>
+<p>
+ Sometimes what you really want to do is bring all the special functions,
+ or all the distributions into a specific namespace-scope, along with a specific
+ policy to use with them. There are two macros defined to assist with that:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span><span class="special">(</span><span class="identifier">Policy</span><span class="special">)</span>
+</pre>
+<p>
+ and:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_MATH_DECLARE_DISTRIBUTIONS</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">Policy</span><span class="special">)</span>
+</pre>
+<p>
+ You can use either of these macros after including any special function or
+ distribution header. For example:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">//using boost::math::tgamma;</span>
+<span class="comment">// Need not declare using boost::math::tgamma here,</span>
+<span class="comment">// because will define tgamma in myspace using macro below.</span>
+
+<span class="keyword">namespace</span> <span class="identifier">myspace</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+ <span class="comment">// Define a policy that does not throw on overflow:</span>
+ <span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">></span> <span class="special">></span> <span class="identifier">my_policy</span><span class="special">;</span>
+
+ <span class="comment">// Define the special functions in this scope to use the policy: </span>
+ <span class="identifier">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span><span class="special">(</span><span class="identifier">my_policy</span><span class="special">)</span>
+<span class="special">}</span>
+
+<span class="comment">// Now we can use myspace::tgamma etc.</span>
+<span class="comment">// They will automatically use "my_policy":</span>
+<span class="comment">//</span>
+<span class="keyword">double</span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">myspace</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="number">30.0</span><span class="special">);</span> <span class="comment">// Will *not* throw on overflow,</span>
+<span class="comment">// despite the large value of factorial 30 = 265252859812191058636308480000000</span>
+<span class="comment">// unlike default policy boost::math::tgamma;</span>
+</pre>
+<p>
+ In this example, using BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS results in a
+ set of thin inline forwarding functions being defined:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">a</span><span class="special">){</span> <span class="keyword">return</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">mypolicy</span><span class="special">());</span> <span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="identifier">T</span> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">a</span><span class="special">)</span> <span class="special">(</span> <span class="keyword">return</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">mypolicy</span><span class="special">());</span> <span class="special">}</span>
+</pre>
+<p>
+ and so on. Note that while a forwarding function is defined for all the special
+ functions, however, unless you include the specific header for the special
+ function you use (or boost/math/special_functions.hpp to include everything),
+ you will get linker errors from functions that are forward declared, but
+ not defined.
+ </p>
+<p>
+ We can do the same thing with the distributions, but this time we need to
+ specify the floating-point type to use:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">cauchy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">namespace</span> <span class="identifier">myspace</span>
+<span class="special">{</span> <span class="comment">// using namespace boost::math::policies; // May be convenient in myspace.</span>
+
+ <span class="comment">// Define a policy called my_policy to use.</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+
+<span class="comment">// In this case we want all the distribution accessor functions to compile,</span>
+<span class="comment">// even if they are mathematically undefined, so</span>
+<span class="comment">// make the policy assert_undefined.</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">assert_undefined</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">assert_undefined</span><span class="special"><</span><span class="keyword">false</span><span class="special">></span> <span class="special">></span> <span class="identifier">my_policy</span><span class="special">;</span>
+
+<span class="comment">// Finally apply this policy to type double.</span>
+<span class="identifier">BOOST_MATH_DECLARE_DISTRIBUTIONS</span><span class="special">(</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">)</span>
+<span class="special">}</span> <span class="comment">// namespace myspace</span>
+
+<span class="comment">// Now we can use myspace::cauchy etc, which will use policy</span>
+<span class="comment">// myspace::mypolicy:</span>
+<span class="comment">//</span>
+<span class="comment">// This compiles but throws a domain error exception at runtime.</span>
+<span class="comment">// Caution! If you omit the try'n'catch blocks, </span>
+<span class="comment">// it will just silently terminate, giving no clues as to why! </span>
+<span class="comment">// So try'n'catch blocks are very strongly recommended.</span>
+
+<span class="keyword">void</span> <span class="identifier">test_cauchy</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">try</span>
+ <span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">myspace</span><span class="special">::</span><span class="identifier">cauchy</span><span class="special">());</span> <span class="comment">// Cauchy does not have a mean!</span>
+ <span class="special">}</span>
+ <span class="keyword">catch</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">&</span> <span class="identifier">e</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+ In this example the result of BOOST_MATH_DECLARE_DISTRIBUTIONS is to declare
+ a typedef for each distribution like this:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cauchy_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">></span> <span class="identifier">cauchy</span><span class="special">;</span>
+<span class="identifier">tyepdef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gamma_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">></span> <span class="identifier">gamma</span><span class="special">;</span>
+</pre>
+<p>
+ and so on. The name given to each typedef is the name of the distribution
+ with the "_distribution" suffix removed.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="policy_defaults.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="pol_ref_ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/pol_ref_ref.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/pol_ref_ref.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,248 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Policy Class Reference</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_ref.html" title="Policy Reference">
+<link rel="prev" href="namespace_pol.html" title="Setting Polices at Namespace Scope">
+<link rel="next" href="../../perf.html" title="Chapter 14. Performance">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="namespace_pol.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../perf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref_pol_ref_ref">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_ref.pol_ref_ref"></a><a class="link" href="pol_ref_ref.html" title="Policy Class Reference">Policy Class Reference</a>
+</h3></div></div></div>
+<p>
+ There's very little to say here, the <code class="computeroutput"><span class="identifier">policy</span></code>
+ class is just a rag-bag compile-time container for a collection of policies:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">policies</span><span class="special">/</span><span class="identifier">policy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<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">namespace</span> <span class="identifier">policies</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">A1</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A2</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A3</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A4</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A5</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A6</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A7</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A8</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A9</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A10</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A11</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A12</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A13</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">policy</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">domain_error_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">pole_error_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">overflow_error_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">underflow_error_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">denorm_error_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">rounding_error_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">evaluation_error_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">indeterminate_result_error_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">precision_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">promote_float_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">promote_double_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">discrete_quantile_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">assert_undefined_type</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special"><...</span><span class="identifier">argument</span> <span class="identifier">list</span><span class="special">...></span>
+<span class="keyword">typename</span> <span class="identifier">normalise</span><span class="special"><</span><span class="identifier">policy</span><span class="special"><>,</span> <span class="identifier">A1</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">make_policy</span><span class="special">(...</span><span class="identifier">argument</span> <span class="identifier">list</span><span class="special">..);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A1</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A2</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A3</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A4</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A5</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A6</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A7</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A8</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A9</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A10</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A11</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A12</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A13</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">normalise</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> computed-from-template-arguments <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The member typedefs of class <code class="computeroutput"><span class="identifier">policy</span></code>
+ are intended for internal use but are documented briefly here for the sake
+ of completeness.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">domain_error_type</span>
+</pre>
+<p>
+ Specifies how domain errors are handled, will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special"><></span></code>
+ with the template argument to <code class="computeroutput"><span class="identifier">domain_error</span></code>
+ one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
+ enumerated values.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">pole_error_type</span>
+</pre>
+<p>
+ Specifies how pole-errors are handled, will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">pole_error</span><span class="special"><></span></code>
+ with the template argument to <code class="computeroutput"><span class="identifier">pole_error</span></code>
+ one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
+ enumerated values.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">overflow_error_type</span>
+</pre>
+<p>
+ Specifies how overflow errors are handled, will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">overflow_error</span><span class="special"><></span></code>
+ with the template argument to <code class="computeroutput"><span class="identifier">overflow_error</span></code>
+ one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
+ enumerated values.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">underflow_error_type</span>
+</pre>
+<p>
+ Specifies how underflow errors are handled, will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">underflow_error</span><span class="special"><></span></code>
+ with the template argument to <code class="computeroutput"><span class="identifier">underflow_error</span></code>
+ one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
+ enumerated values.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">denorm_error_type</span>
+</pre>
+<p>
+ Specifies how denorm errors are handled, will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">denorm_error</span><span class="special"><></span></code>
+ with the template argument to <code class="computeroutput"><span class="identifier">denorm_error</span></code>
+ one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
+ enumerated values.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">rounding_error_type</span>
+</pre>
+<p>
+ Specifies how rounding errors are handled, will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">rounding_error</span><span class="special"><></span></code>
+ with the template argument to <code class="computeroutput"><span class="identifier">rounding_error</span></code>
+ one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
+ enumerated values.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">evaluation_error_type</span>
+</pre>
+<p>
+ Specifies how evaluation errors are handled, will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">evaluation_error</span><span class="special"><></span></code>
+ with the template argument to <code class="computeroutput"><span class="identifier">evaluation_error</span></code>
+ one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
+ enumerated values.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">indeterminate_error_type</span>
+</pre>
+<p>
+ Specifies how indeterminate result errors are handled, will be an instance
+ of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">indeterminate_result_error</span><span class="special"><></span></code>
+ with the template argument to <code class="computeroutput"><span class="identifier">indeterminate_result_error</span></code>
+ one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
+ enumerated values.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">precision_type</span>
+</pre>
+<p>
+ Specifies the internal precision to use in binary digits (uses zero to represent
+ whatever the default precision is). Will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">digits2</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span></code> which
+ in turn inherits from <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span></code>.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">promote_float_type</span>
+</pre>
+<p>
+ Specifies whether or not to promote <code class="computeroutput"><span class="keyword">float</span></code>
+ arguments to <code class="computeroutput"><span class="keyword">double</span></code> precision
+ internally. Will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">promote_float</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span></code>
+ which in turn inherits from <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">bool_</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span></code>.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">promote_double_type</span>
+</pre>
+<p>
+ Specifies whether or not to promote <code class="computeroutput"><span class="keyword">double</span></code>
+ arguments to <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ precision internally. Will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">promote_float</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span></code>
+ which in turn inherits from <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">bool_</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span></code>.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">discrete_quantile_type</span>
+</pre>
+<p>
+ Specifies how discrete quantiles are evaluated, will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">discrete_quantile</span><span class="special"><></span></code>
+ instantiated with one of the <code class="computeroutput"><span class="identifier">discrete_quantile_policy_type</span></code>
+ enumerated type.
+ </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special"><...>::</span><span class="identifier">assert_undefined_type</span>
+</pre>
+<p>
+ Specifies whether mathematically-undefined properties are asserted as compile-time
+ errors, or treated as runtime errors instead. Will be an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">assert_undefined</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span></code> which
+ in turn inherits from <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">bool_</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><...</span><span class="identifier">argument</span> <span class="identifier">list</span><span class="special">...></span>
+<span class="keyword">typename</span> <span class="identifier">normalise</span><span class="special"><</span><span class="identifier">policy</span><span class="special"><>,</span> <span class="identifier">A1</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">make_policy</span><span class="special">(...</span><span class="identifier">argument</span> <span class="identifier">list</span><span class="special">..);</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="identifier">make_policy</span></code> is a helper function
+ that converts a list of policies into a normalised <code class="computeroutput"><span class="identifier">policy</span></code>
+ class.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A1</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A2</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A3</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A4</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A5</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A6</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A7</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A8</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A9</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A10</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A11</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A12</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A13</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">normalise</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> computed-from-template-arguments <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">normalise</span></code> class template
+ converts one instantiation of the <code class="computeroutput"><span class="identifier">policy</span></code>
+ class into a normalised form. This is used internally to reduce code bloat:
+ so that instantiating a special function on <code class="computeroutput"><span class="identifier">policy</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span><span class="identifier">B</span><span class="special">></span></code> or
+ <code class="computeroutput"><span class="identifier">policy</span><span class="special"><</span><span class="identifier">B</span><span class="special">,</span><span class="identifier">A</span><span class="special">></span></code> actually both generate the same code
+ internally.
+ </p>
+<p>
+ Further more, <code class="computeroutput"><span class="identifier">normalise</span></code> can
+ be used to combine a policy with one or more policies: for example many of
+ the special functions will use this to set policies which they don't make
+ use of to their default values, before forwarding to the actual implementation.
+ In this way code bloat is reduced, since the actual implementation depends
+ only on the policy types that they actually use.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="namespace_pol.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../perf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/policy_defaults.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/policy_defaults.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,248 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using Macros to Change the Policy Defaults</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_ref.html" title="Policy Reference">
+<link rel="prev" href="iteration_pol.html" title="Iteration Limits Policies">
+<link rel="next" href="namespace_pol.html" title="Setting Polices at Namespace Scope">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="iteration_pol.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="namespace_pol.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref_policy_defaults">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_ref.policy_defaults"></a><a class="link" href="policy_defaults.html" title="Using Macros to Change the Policy Defaults">Using Macros to
+ Change the Policy Defaults</a>
+</h3></div></div></div>
+<p>
+ You can use the various macros below to change any (or all) of the policies.
+ </p>
+<p>
+ You can make a local change by placing a macro definition <span class="bold"><strong>before</strong></span>
+ a function or distribution #include.
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ There is a danger of One-Definition-Rule violations if you add ad-hoc macros
+ to more than one source files: these must be set the same in <span class="bold"><strong>every translation unit</strong></span>.
+ </p></td></tr>
+</table></div>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If you place it after the #include it will have no effect, (and it will
+ affect only any other following #includes). This is probably not what you
+ intend!
+ </p></td></tr>
+</table></div>
+<p>
+ If you want to alter the defaults for any or all of the policies for <span class="bold"><strong>all</strong></span> functions and distributions, installation-wide,
+ then you can do so by defining various macros in boost/math/tools/user.hpp.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h0"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_domain_error_policy"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_domain_error_policy">BOOST_MATH_DOMAIN_ERROR_POLICY</a>
+ </h6>
+<p>
+ Defines what happens when a domain error occurs, if not defined then defaults
+ to <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, but can
+ be set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, <code class="computeroutput"><span class="identifier">errno_on_error</span></code>,
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h1"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_pole_error_policy"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_pole_error_policy">BOOST_MATH_POLE_ERROR_POLICY</a>
+ </h6>
+<p>
+ Defines what happens when a pole error occurs, if not defined then defaults
+ to <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, but can
+ be set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, <code class="computeroutput"><span class="identifier">errno_on_error</span></code>,
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h2"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_overflow_error_policy"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_overflow_error_policy">BOOST_MATH_OVERFLOW_ERROR_POLICY</a>
+ </h6>
+<p>
+ Defines what happens when an overflow error occurs, if not defined then defaults
+ to <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, but can
+ be set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, <code class="computeroutput"><span class="identifier">errno_on_error</span></code>,
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h3"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_rounding_error_policy"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_rounding_error_policy">BOOST_MATH_ROUNDING_ERROR_POLICY</a>
+ </h6>
+<p>
+ Defines what happens when a rounding error occurs, if not defined then defaults
+ to <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, but can
+ be set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, <code class="computeroutput"><span class="identifier">errno_on_error</span></code>,
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h4"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_evaluation_error_poli"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_evaluation_error_poli">BOOST_MATH_EVALUATION_ERROR_POLICY</a>
+ </h6>
+<p>
+ Defines what happens when an internal evaluation error occurs, if not defined
+ then defaults to <code class="computeroutput"><span class="identifier">throw_on_error</span></code>,
+ but can be set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, <code class="computeroutput"><span class="identifier">errno_on_error</span></code>,
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h5"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_underflow_error_polic"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_underflow_error_polic">BOOST_MATH_UNDERFLOW_ERROR_POLICY</a>
+ </h6>
+<p>
+ Defines what happens when an overflow error occurs, if not defined then defaults
+ to <code class="computeroutput"><span class="identifier">ignore_error</span></code>, but can
+ be set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, <code class="computeroutput"><span class="identifier">errno_on_error</span></code>,
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h6"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_denorm_error_policy"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_denorm_error_policy">BOOST_MATH_DENORM_ERROR_POLICY</a>
+ </h6>
+<p>
+ Defines what happens when a denormalisation error occurs, if not defined
+ then defaults to <code class="computeroutput"><span class="identifier">ignore_error</span></code>,
+ but can be set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, <code class="computeroutput"><span class="identifier">errno_on_error</span></code>,
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h7"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_indeterminate_result_"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_indeterminate_result_">BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY</a>
+ </h6>
+<p>
+ Defines what happens when the result is indeterminate, but where there is
+ none the less a convention for the result. If not defined then defaults to
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code>, but can be
+ set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>,
+ <code class="computeroutput"><span class="identifier">errno_on_error</span></code>, <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h8"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_digits10_policy"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_digits10_policy">BOOST_MATH_DIGITS10_POLICY</a>
+ </h6>
+<p>
+ Defines how many decimal digits to use in internal computations: defaults
+ to <code class="computeroutput"><span class="number">0</span></code> - meaning use all available
+ digits - but can be set to some other decimal value. Since setting this is
+ likely to have a substantial impact on accuracy, it's not generally recommended
+ that you change this from the default.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h9"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_promote_float_policy"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_promote_float_policy">BOOST_MATH_PROMOTE_FLOAT_POLICY</a>
+ </h6>
+<p>
+ Determines whether <code class="computeroutput"><span class="keyword">float</span></code> types
+ get promoted to <code class="computeroutput"><span class="keyword">double</span></code> internally
+ to ensure maximum precision in the result, defaults to <code class="computeroutput"><span class="keyword">true</span></code>,
+ but can be set to <code class="computeroutput"><span class="keyword">false</span></code> to turn
+ promotion of <code class="computeroutput"><span class="keyword">float</span></code>'s off.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h10"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_promote_double_policy"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_promote_double_policy">BOOST_MATH_PROMOTE_DOUBLE_POLICY</a>
+ </h6>
+<p>
+ Determines whether <code class="computeroutput"><span class="keyword">double</span></code> types
+ get promoted to <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ internally to ensure maximum precision in the result, defaults to <code class="computeroutput"><span class="keyword">true</span></code>, but can be set to <code class="computeroutput"><span class="keyword">false</span></code>
+ to turn promotion of <code class="computeroutput"><span class="keyword">double</span></code>'s
+ off.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h11"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_discrete_quantile_pol"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_discrete_quantile_pol">BOOST_MATH_DISCRETE_QUANTILE_POLICY</a>
+ </h6>
+<p>
+ Determines how discrete quantiles return their results: either as an integer,
+ or as a real value, can be set to one of the enumerated values: <code class="computeroutput"><span class="identifier">real</span></code>, <code class="computeroutput"><span class="identifier">integer_round_outwards</span></code>,
+ <code class="computeroutput"><span class="identifier">integer_round_inwards</span></code>, <code class="computeroutput"><span class="identifier">integer_round_down</span></code>, <code class="computeroutput"><span class="identifier">integer_round_up</span></code>,
+ <code class="computeroutput"><span class="identifier">integer_round_nearest</span></code>. Defaults
+ to <code class="computeroutput"><span class="identifier">integer_round_outwards</span></code>.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h12"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_assert_undefined_poli"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_assert_undefined_poli">BOOST_MATH_ASSERT_UNDEFINED_POLICY</a>
+ </h6>
+<p>
+ Determines whether functions that are mathematically undefined for a specific
+ distribution compile or raise a static (i.e. compile-time) assertion. Defaults
+ to <code class="computeroutput"><span class="keyword">true</span></code>: meaning that any mathematically
+ undefined function will not compile. When set to <code class="computeroutput"><span class="keyword">false</span></code>
+ then the function will compile but return the result of a domain error: this
+ can be useful for some generic code, that needs to work with all distributions
+ and determine at runtime whether or not a particular property is well defined.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h13"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_max_series_iteration_"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_max_series_iteration_">BOOST_MATH_MAX_SERIES_ITERATION_POLICY</a>
+ </h6>
+<p>
+ Determines how many series iterations a special function is permitted to
+ perform before it gives up and returns an <a class="link" href="../error_handling.html#math_toolkit.error_handling.evaluation_error">evaluation_error</a>:
+ Defaults to 1000000.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h14"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.boost_math_max_root_iteration_po"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.boost_math_max_root_iteration_po">BOOST_MATH_MAX_ROOT_ITERATION_POLICY</a>
+ </h6>
+<p>
+ Determines how many root-finding iterations a special function is permitted
+ to perform before it gives up and returns an <a class="link" href="../error_handling.html#math_toolkit.error_handling.evaluation_error">evaluation_error</a>:
+ Defaults to 200.
+ </p>
+<h6>
+<a name="math_toolkit.pol_ref.policy_defaults.h15"></a>
+ <span class="phrase"><a name="math_toolkit.pol_ref.policy_defaults.example"></a></span><a class="link" href="policy_defaults.html#math_toolkit.pol_ref.policy_defaults.example">Example</a>
+ </h6>
+<p>
+ Suppose we want overflow errors to set <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> and return an infinity, discrete
+ quantiles to return a real-valued result (rather than round to integer),
+ and for mathematically undefined functions to compile, but return a domain
+ error. Then we could add the following to boost/math/tools/user.hpp:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_OVERFLOW_ERROR_POLICY</span> <span class="identifier">errno_on_error</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span> <span class="identifier">real</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_ASSERT_UNDEFINED_POLICY</span> <span class="keyword">false</span>
+</pre>
+<p>
+ or we could place these definitions <span class="bold"><strong>before</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">;</span>
+</pre>
+<p>
+ in a source .cpp file.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="iteration_pol.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="namespace_pol.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/precision_pol.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_ref/precision_pol.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,100 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Precision Policies</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_ref.html" title="Policy Reference">
+<link rel="prev" href="discrete_quant_ref.html" title="Discrete Quantile Policies">
+<link rel="next" href="iteration_pol.html" title="Iteration Limits Policies">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="discrete_quant_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="iteration_pol.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_ref_precision_pol">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_ref.precision_pol"></a><a class="link" href="precision_pol.html" title="Precision Policies">Precision Policies</a>
+</h3></div></div></div>
+<p>
+ There are two equivalent policies that effect the <span class="emphasis"><em>working precision</em></span>
+ used to calculate results, these policies both default to 0 - meaning calculate
+ to the maximum precision available in the type being used - but can be set
+ to other values to cause lower levels of precision to be used. One might
+ want to trade precision for evaluation speed.
+ </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">namespace</span> <span class="identifier">policies</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">digits10</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">digits2</span><span class="special">;</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ As you would expect, <span class="emphasis"><em>digits10</em></span> specifies the number of
+ decimal digits to use, and <span class="emphasis"><em>digits2</em></span> the number of binary
+ digits. Internally, whichever is used, the precision is always converted
+ to <span class="emphasis"><em>binary digits</em></span>.
+ </p>
+<p>
+ These policies are specified at compile-time, because many of the special
+ functions use compile-time-dispatch to select which approximation to use
+ based on the precision requested and the numeric type being used.
+ </p>
+<p>
+ For example we could calculate <code class="computeroutput"><span class="identifier">tgamma</span></code>
+ to approximately 5 decimal digits using:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">digits10</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">digits10</span><span class="special"><</span><span class="number">5</span><span class="special">></span> <span class="special">></span> <span class="identifier">my_pol_5</span><span class="special">;</span> <span class="comment">// Define a new, non-default, policy</span>
+<span class="comment">// to calculate tgamma to accuracy of approximately 5 decimal digits.</span>
+</pre>
+<p>
+ Or again using helper function <code class="computeroutput"><span class="identifier">make_policy</span></code>:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="keyword">double</span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="number">12</span><span class="special">,</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">digits10</span><span class="special"><</span><span class="number">5</span><span class="special">></span> <span class="special">>());</span> <span class="comment">// Concise make_policy.</span>
+</pre>
+<p>
+ And for a quantile of a distribution to approximately 25-bit precision:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">bits</span> <span class="special">=</span> <span class="number">25</span><span class="special">;</span> <span class="comment">// approximate precision.</span>
+
+<span class="keyword">double</span> <span class="identifier">q</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span>
+ <span class="identifier">normal_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">digits2</span><span class="special"><</span><span class="identifier">bits</span><span class="special">></span> <span class="special">></span> <span class="special">>(),</span>
+ <span class="number">0.05</span><span class="special">);</span> <span class="comment">// 5% quantile.</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="discrete_quant_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="iteration_pol.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Policy Tutorial</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">
+<link rel="prev" href="pol_overview.html" title="Policy Overview">
+<link rel="next" href="pol_tutorial/what_is_a_policy.html" title="So Just What is a Policy Anyway?">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="pol_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../policy.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="pol_tutorial/what_is_a_policy.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.pol_tutorial"></a><a class="link" href="pol_tutorial.html" title="Policy Tutorial">Policy Tutorial</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="pol_tutorial/what_is_a_policy.html">So Just What
+ is a Policy Anyway?</a></span></dt>
+<dt><span class="section"><a href="pol_tutorial/policy_tut_defaults.html">Policies
+ Have Sensible Defaults</a></span></dt>
+<dt><span class="section"><a href="pol_tutorial/policy_usage.html">So How are Policies
+ Used Anyway?</a></span></dt>
+<dt><span class="section"><a href="pol_tutorial/changing_policy_defaults.html">Changing
+ the Policy Defaults</a></span></dt>
+<dt><span class="section"><a href="pol_tutorial/ad_hoc_dist_policies.html">Setting
+ Policies for Distributions on an Ad Hoc Basis</a></span></dt>
+<dt><span class="section"><a href="pol_tutorial/ad_hoc_sf_policies.html">Changing
+ the Policy on an Ad Hoc Basis for the Special Functions</a></span></dt>
+<dt><span class="section"><a href="pol_tutorial/namespace_policies.html">Setting
+ Policies at Namespace or Translation Unit Scope</a></span></dt>
+<dt><span class="section"><a href="pol_tutorial/user_def_err_pol.html">Calling User
+ Defined Error Handlers</a></span></dt>
+<dt><span class="section"><a href="pol_tutorial/understand_dis_quant.html">Understanding
+ Quantiles of Discrete Distributions</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="pol_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../policy.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="pol_tutorial/what_is_a_policy.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/ad_hoc_dist_policies.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/ad_hoc_dist_policies.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,95 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Setting Policies for Distributions on an Ad Hoc Basis</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="prev" href="changing_policy_defaults.html" title="Changing the Policy Defaults">
+<link rel="next" href="ad_hoc_sf_policies.html" title="Changing the Policy on an Ad Hoc Basis for the Special Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="changing_policy_defaults.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ad_hoc_sf_policies.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial_ad_hoc_dist_policies">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_tutorial.ad_hoc_dist_policies"></a><a class="link" href="ad_hoc_dist_policies.html" title="Setting Policies for Distributions on an Ad Hoc Basis">Setting
+ Policies for Distributions on an Ad Hoc Basis</a>
+</h3></div></div></div>
+<p>
+ All of the statistical distributions in this library are class templates
+ that accept two template parameters: real type (float, double ...) and policy
+ (how to handle exceptional events), both with sensible defaults, for example:
+ </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"><</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> <span class="identifier">Policy</span> <span class="special">=</span> <span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><></span> <span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">fisher_f_distribution</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">fisher_f_distribution</span><span class="special"><></span> <span class="identifier">fisher_f</span><span class="special">;</span>
+
+<span class="special">}}</span>
+</pre>
+<p>
+ This policy gets used by all the accessor functions that accept a distribution
+ as an argument, and forwarded to all the functions called by these. So if
+ you use the shorthand-typedef for the distribution, then you get <code class="computeroutput"><span class="keyword">double</span></code> precision arithmetic and all the default
+ policies.
+ </p>
+<p>
+ However, say for example we wanted to evaluate the quantile of the binomial
+ distribution at float precision, without internal promotion to double, and
+ with the result rounded to the <span class="emphasis"><em>nearest</em></span> integer, then
+ here's how it can be done:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial_distribution</span><span class="special">;</span>
+
+<span class="comment">// Begin by defining a policy type, that gives the behaviour we want:</span>
+
+<span class="comment">//using namespace boost::math::policies; or explicitly</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">promote_float</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">discrete_quantile</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">integer_round_nearest</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">promote_float</span><span class="special"><</span><span class="keyword">false</span><span class="special">>,</span> <span class="comment">// Do not promote to double.</span>
+ <span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_nearest</span><span class="special">></span> <span class="comment">// Round result to nearest integer.</span>
+<span class="special">></span> <span class="identifier">mypolicy</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// Then define a new distribution that uses it:</span>
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial_distribution</span><span class="special"><</span><span class="keyword">float</span><span class="special">,</span> <span class="identifier">mypolicy</span><span class="special">></span> <span class="identifier">mybinom</span><span class="special">;</span>
+
+<span class="comment">// And now use it to get the quantile:</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"quantile(mybinom(200, 0.25), 0.05) is: "</span> <span class="special"><<</span>
+ <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">mybinom</span><span class="special">(</span><span class="number">200</span><span class="special">,</span> <span class="number">0.25</span><span class="special">),</span> <span class="number">0.05</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Which outputs:
+ </p>
+<pre class="programlisting">quantile is: 40</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="changing_policy_defaults.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ad_hoc_sf_policies.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/ad_hoc_sf_policies.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/ad_hoc_sf_policies.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,164 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Changing the Policy on an Ad Hoc Basis for the Special Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="prev" href="ad_hoc_dist_policies.html" title="Setting Policies for Distributions on an Ad Hoc Basis">
+<link rel="next" href="namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ad_hoc_dist_policies.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="namespace_policies.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial_ad_hoc_sf_policies">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_tutorial.ad_hoc_sf_policies"></a><a class="link" href="ad_hoc_sf_policies.html" title="Changing the Policy on an Ad Hoc Basis for the Special Functions">Changing
+ the Policy on an Ad Hoc Basis for the Special Functions</a>
+</h3></div></div></div>
+<p>
+ All of the special functions in this library come in two overloaded forms,
+ one with a final "policy" parameter, and one without. For example:
+ </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"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="identifier">RealType</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">RealType</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Normally, the second version is just a forwarding wrapper to the first like
+ this:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="identifier">RealType</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">x</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><>());</span>
+<span class="special">}</span>
+</pre>
+<p>
+ So calling a special function with a specific policy is just a matter of
+ defining the policy type to use and passing it as the final parameter. For
+ example, suppose we want <code class="computeroutput"><span class="identifier">tgamma</span></code>
+ to behave in a C-compatible fashion and set <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> when an error occurs, and never throw
+ an exception:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">;</span>
+
+<span class="comment">// Define the policy to use:</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span> <span class="comment">// may be convenient, or</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+<span class="comment">// Types of error whose action can be altered by policies:.</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">evaluation_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">overflow_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">pole_error</span><span class="special">;</span>
+<span class="comment">// Actions on error (in enum error_policy_type):</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">errno_on_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">ignore_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">throw_on_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_error</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">></span>
+<span class="special">></span> <span class="identifier">c_policy</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// Now use the policy when calling tgamma:</span>
+
+<span class="comment">// http://msdn.microsoft.com/en-us/library/t3ayayh1.aspx </span>
+<span class="comment">// Microsoft errno declared in STDLIB.H as "extern int errno;" </span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">errno</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="comment">// Reset.</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(30000) is: "</span>
+ <span class="special"><<</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="number">30000</span><span class="special">,</span> <span class="identifier">c_policy</span><span class="special">())</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Too big parameter</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// errno 34 Numerical result out of range.</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(-10) is: "</span>
+ <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(-</span><span class="number">10</span><span class="special">,</span> <span class="identifier">c_policy</span><span class="special">())</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Negative parameter.</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// error 33 Numerical argument out of domain.</span>
+<span class="special">}</span> <span class="comment">// int main()</span>
+</pre>
+<p>
+ which outputs:
+ </p>
+<pre class="programlisting">Result of tgamma(30000) is: 1.#INF
+errno = 34
+Result of tgamma(-10) is: 1.#QNAN
+errno = 33
+</pre>
+<p>
+ Alternatively, for ad hoc use, we can use the <code class="computeroutput"><span class="identifier">make_policy</span></code>
+ helper function to create a policy for us: this usage is more verbose, so
+ is probably only preferred when a policy is going to be used once only:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="comment">// using namespace boost::math::policies; // or</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">errno_on_error</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">make_policy</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">pole_error</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">overflow_error</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">evaluation_error</span><span class="special">;</span>
+
+ <span class="identifier">errno</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(30000) is: "</span>
+ <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span>
+ <span class="number">30000</span><span class="special">,</span>
+ <span class="identifier">make_policy</span><span class="special">(</span>
+ <span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>(),</span>
+ <span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>(),</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>(),</span>
+ <span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>()</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Check errno was set:</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// and again with evaluation at a pole:</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(-10) is: "</span>
+ <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span>
+ <span class="special">-</span><span class="number">10</span><span class="special">,</span>
+ <span class="identifier">make_policy</span><span class="special">(</span>
+ <span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>(),</span>
+ <span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>(),</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>(),</span>
+ <span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>()</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Check errno was set:</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="ad_hoc_dist_policies.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="namespace_policies.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/changing_policy_defaults.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/changing_policy_defaults.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,125 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Changing the Policy Defaults</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="prev" href="policy_usage.html" title="So How are Policies Used Anyway?">
+<link rel="next" href="ad_hoc_dist_policies.html" title="Setting Policies for Distributions on an Ad Hoc Basis">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="policy_usage.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ad_hoc_dist_policies.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial_changing_policy_defaults">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_tutorial.changing_policy_defaults"></a><a class="link" href="changing_policy_defaults.html" title="Changing the Policy Defaults">Changing
+ the Policy Defaults</a>
+</h3></div></div></div>
+<p>
+ The default policies used by the library are changed by the usual configuration
+ macro method.
+ </p>
+<p>
+ For example, passing <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_MATH_DOMAIN_ERROR_POLICY</span><span class="special">=</span><span class="identifier">errno_on_error</span></code>
+ to your compiler will cause domain errors to set <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> and return a NaN
+ rather than the usual default behaviour of throwing a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+ exception.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ For Microsoft Visual Studio,you can add to the Project Property Page, C/C++,
+ Preprocessor, Preprocessor definitions like:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_MATH_ASSERT_UNDEFINED_POLICY</span><span class="special">=</span><span class="number">0</span>
+<span class="identifier">BOOST_MATH_OVERFLOW_ERROR_POLICY</span><span class="special">=</span><span class="identifier">errno_on_error</span></pre>
+<p>
+ This may be helpful to avoid complications with pre-compiled headers that
+ may mean that the equivalent definitions in source code:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_ASSERT_UNDEFINED_POLICY</span> <span class="keyword">false</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_OVERFLOW_ERROR_POLICY</span> <span class="identifier">errno_on_error</span></pre>
+<p>
+ <span class="bold"><strong>may be ignored</strong></span>.
+ </p>
+<p>
+ The compiler command line shows:
+ </p>
+<pre class="programlisting"><span class="special">/</span><span class="identifier">D</span> <span class="string">"BOOST_MATH_ASSERT_UNDEFINED_POLICY=0"</span>
+<span class="special">/</span><span class="identifier">D</span> <span class="string">"BOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error"</span></pre>
+</td></tr>
+</table></div>
+<p>
+ There is however a very important caveat to this:
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ <span class="bold"><strong><span class="emphasis"><em>Default policies changed by setting configuration
+ macros must be changed uniformly in every translation unit in the program.</em></span></strong></span>
+ </p>
+<p>
+ Failure to follow this rule may result in violations of the "One Definition
+ Rule (ODR)" and result in unpredictable program behaviour.
+ </p>
+</td></tr>
+</table></div>
+<p>
+ That means there are only two safe ways to use these macros:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Edit them in boost/math/tools/user.hpp,
+ so that the defaults are set on an installation-wide basis. Unfortunately
+ this may not be convenient if you are using a pre-installed Boost distribution
+ (on Linux for example).
+ </li>
+<li class="listitem">
+ Set the defines in your project's Makefile or build environment, so that
+ they are set uniformly across all translation units.
+ </li>
+</ul></div>
+<p>
+ What you should <span class="bold"><strong>not</strong></span> do is:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Set the defines in the source file using <code class="computeroutput"><span class="preprocessor">#define</span></code>
+ as doing so almost certainly will break your program, unless you're absolutely
+ certain that the program is restricted to a single translation unit.
+ </li></ul></div>
+<p>
+ And, yes, you will find examples in our test programs where we break this
+ rule: but only because we know there will always be a single translation
+ unit only: <span class="emphasis"><em>don't say that you weren't warned!</em></span>
+ </p>
+<p>
+ [error_handling_example]
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="policy_usage.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ad_hoc_dist_policies.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/namespace_policies.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/namespace_policies.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,356 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Setting Policies at Namespace or Translation Unit Scope</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="prev" href="ad_hoc_sf_policies.html" title="Changing the Policy on an Ad Hoc Basis for the Special Functions">
+<link rel="next" href="user_def_err_pol.html" title="Calling User Defined Error Handlers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ad_hoc_sf_policies.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="user_def_err_pol.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial_namespace_policies">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_tutorial.namespace_policies"></a><a class="link" href="namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope">Setting
+ Policies at Namespace or Translation Unit Scope</a>
+</h3></div></div></div>
+<p>
+ Sometimes what you want to do is just change a set of policies within the
+ current scope: <span class="bold"><strong>the one thing you should not do in this
+ situation is use the configuration macros</strong></span>, as this can lead to
+ "One Definition Rule" violations. Instead this library provides
+ a pair of macros especially for this purpose.
+ </p>
+<p>
+ Let's consider the special functions first: we can declare a set of forwarding
+ functions that all use a specific policy using the macro BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(<span class="emphasis"><em>Policy</em></span>).
+ This macro should be used either inside a unique namespace set aside for
+ the purpose (for example, a C namespace for a C-style policy), or an unnamed
+ namespace if you just want the functions visible in global scope for the
+ current file only.
+ </p>
+<p>
+ Suppose we want <code class="computeroutput"><span class="identifier">C</span><span class="special">::</span><span class="identifier">foo</span><span class="special">()</span></code> to
+ behave in a C-compatible way and set <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> on error rather than throwing any
+ exceptions.
+ </p>
+<p>
+ We'll begin by including the needed header for our function:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">hpp</span><span class="special">></span>
+<span class="comment">//using boost::math::tgamma; // Not needed because using C::tgamma.</span>
+</pre>
+<p>
+ Open up the "C" namespace that we'll use for our functions, and
+ define the policy type we want: in this case a C-style one that sets ::errno
+ and returns a standard value, rather than throwing exceptions.
+ </p>
+<p>
+ Any policies we don't specify here will inherit the defaults.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">C</span>
+<span class="special">{</span> <span class="comment">// To hold our C-style policy.</span>
+ <span class="comment">//using namespace boost::math::policies; or explicitly:</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">pole_error</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">overflow_error</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">evaluation_error</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">errno_on_error</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">></span>
+ <span class="special">></span> <span class="identifier">c_policy</span><span class="special">;</span>
+</pre>
+<p>
+ All we need do now is invoke the BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS macro
+ passing our policy type c_policy as the single argument:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span><span class="special">(</span><span class="identifier">c_policy</span><span class="special">)</span>
+
+<span class="special">}</span> <span class="comment">// close namespace C</span>
+</pre>
+<p>
+ We now have a set of forwarding functions defined in namespace C that all
+ look something like this:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">promote_args</span><span class="special"><</span><span class="identifier">RT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">RT</span> <span class="identifier">z</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">c_policy</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+<p>
+ So that when we call <code class="computeroutput"><span class="identifier">C</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span></code>, we
+ really end up calling <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span>
+ <span class="identifier">C</span><span class="special">::</span><span class="identifier">c_policy</span><span class="special">())</span></code>:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">errno</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(30000) is: "</span>
+ <span class="special"><<</span> <span class="identifier">C</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="number">30000</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Note using C::tgamma</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// errno = 34</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(-10) is: "</span>
+ <span class="special"><<</span> <span class="identifier">C</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(-</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// errno = 33, overwriting previous value of 34.</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Which outputs:
+ </p>
+<pre class="programlisting">Result of C::tgamma(30000) is: 1.#INF
+errno = 34
+Result of C::tgamma(-10) is: 1.#QNAN
+errno = 33
+</pre>
+<p>
+ This mechanism is particularly useful when we want to define a project-wide
+ policy, and don't want to modify the Boost source, or to set project wide
+ build macros (possibly fragile and easy to forget).
+ </p>
+<p>
+ The same mechanism works well at file scope as well, by using an unnamed
+ namespace, we can ensure that these declarations don't conflict with any
+ alternate policies present in other translation units:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">hpp</span><span class="special">></span>
+<span class="comment">// using boost::math::tgamma; // Would create an ambiguity between</span>
+<span class="comment">// 'double boost::math::tgamma<int>(T)' and</span>
+<span class="comment">// 'double 'anonymous-namespace'::tgamma<int>(RT)'.</span>
+
+<span class="keyword">namespace</span>
+<span class="special">{</span> <span class="comment">// unnamed</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">></span>
+<span class="special">></span> <span class="identifier">c_policy</span><span class="special">;</span>
+
+<span class="identifier">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span><span class="special">(</span><span class="identifier">c_policy</span><span class="special">)</span>
+</pre>
+<p>
+ So that when we call <code class="computeroutput"><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span></code>,
+ we really end up calling <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span>
+ <span class="identifier">anonymous</span><span class="special">-</span><span class="keyword">namespace</span><span class="special">::</span><span class="identifier">c_policy</span><span class="special">())</span></code>.
+ </p>
+<pre class="programlisting"><span class="special">}</span> <span class="comment">// close unnamed namespace</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">errno</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(30000) is: "</span>
+ <span class="special"><<</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="number">30000</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// tgamma in unnamed namespace in this translation unit (file) only.</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(-10) is: "</span>
+ <span class="special"><<</span> <span class="identifier">tgamma</span><span class="special">(-</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Default tgamma policy would throw an exception, and abort.</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Handling policies for the statistical distributions is very similar except
+ that now the macro BOOST_MATH_DECLARE_DISTRIBUTIONS accepts two parameters:
+ the floating point type to use, and the policy type to apply. For example:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_MATH_DECLARE_DISTRIBUTIONS</span><span class="special">(</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">mypolicy</span><span class="special">)</span>
+</pre>
+<p>
+ Results a set of typedefs being defined like this:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">mypolicy</span><span class="special">></span> <span class="identifier">normal</span><span class="special">;</span>
+</pre>
+<p>
+ The name of each typedef is the same as the name of the distribution class
+ template, but without the "_distribution" suffix.
+ </p>
+<p>
+ Suppose we want a set of distributions to behave as follows:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Return infinity on overflow, rather than throwing an exception.
+ </li>
+<li class="listitem">
+ Don't perform any promotion from double to long double internally.
+ </li>
+<li class="listitem">
+ Return the closest integer result from the quantiles of discrete distributions.
+ </li>
+</ul></div>
+<p>
+ We'll begin by including the needed header for all the distributions:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">hpp</span><span class="special">></span>
+</pre>
+<p>
+ Open up an appropriate namespace, calling it <code class="computeroutput"><span class="identifier">my_distributions</span></code>,
+ for our distributions, and define the policy type we want. Any policies we
+ don't specify here will inherit the defaults:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">my_distributions</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+ <span class="comment">// using boost::math::policies::errno_on_error; // etc.</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="comment">// return infinity and set errno rather than throw:</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="comment">// Don't promote double -> long double internally:</span>
+ <span class="identifier">promote_double</span><span class="special"><</span><span class="keyword">false</span><span class="special">>,</span>
+ <span class="comment">// Return the closest integer result for discrete quantiles:</span>
+ <span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_nearest</span><span class="special">></span>
+ <span class="special">></span> <span class="identifier">my_policy</span><span class="special">;</span>
+</pre>
+<p>
+ All we need do now is invoke the BOOST_MATH_DECLARE_DISTRIBUTIONS macro passing
+ the floating point type <code class="computeroutput"><span class="keyword">double</span></code>
+ and policy types <code class="computeroutput"><span class="identifier">my_policy</span></code>
+ as arguments:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_MATH_DECLARE_DISTRIBUTIONS</span><span class="special">(</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">)</span>
+
+<span class="special">}</span> <span class="comment">// close namespace my_namespace</span>
+</pre>
+<p>
+ We now have a set of typedefs defined in namespace my_distributions that
+ all look something like this:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">></span> <span class="identifier">normal</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cauchy_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">></span> <span class="identifier">cauchy</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gamma_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">></span> <span class="identifier">gamma</span><span class="special">;</span>
+<span class="comment">// etc</span>
+</pre>
+<p>
+ So that when we use my_distributions::normal we really end up using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">></span></code>:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="comment">// Construct distribution with something we know will overflow</span>
+ <span class="comment">// (using double rather than if promoted to long double):</span>
+ <span class="identifier">my_distributions</span><span class="special">::</span><span class="identifier">normal</span> <span class="identifier">norm</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span>
+
+ <span class="identifier">errno</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of quantile(norm, 0) is: "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">norm</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// -infinity.</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">errno</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of quantile(norm, 1) is: "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">norm</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// +infinity.</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Now try a discrete distribution.</span>
+ <span class="identifier">my_distributions</span><span class="special">::</span><span class="identifier">binomial</span> <span class="identifier">binom</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of quantile(binom, 0.05) is: "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom</span><span class="special">,</span> <span class="number">0.05</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// To check we get integer results.</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of quantile(complement(binom, 0.05)) is: "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">binom</span><span class="special">,</span> <span class="number">0.05</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Which outputs:
+ </p>
+<pre class="programlisting">Result of quantile(norm, 0) is: -1.#INF
+errno = 34
+Result of quantile(norm, 1) is: 1.#INF
+errno = 34
+Result of quantile(binom, 0.05) is: 1
+Result of quantile(complement(binom, 0.05)) is: 8
+</pre>
+<p>
+ This mechanism is particularly useful when we want to define a project-wide
+ policy, and don't want to modify the Boost source or set project wide build
+ macros (possibly fragile and easy to forget).
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ There is an important limitation to note: you can *not use the macros BOOST_MATH_DECLARE_DISTRIBUTIONS
+ and BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS <span class="emphasis"><em>in the same namespace</em></span>*,
+ as doing so creates ambiguities between functions and distributions of
+ the same name.
+ </p></td></tr>
+</table></div>
+<p>
+ As before, the same mechanism works well at file scope as well: by using
+ an unnamed namespace, we can ensure that these declarations don't conflict
+ with any alternate policies present in other translation units:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">hpp</span><span class="special">></span> <span class="comment">// All distributions.</span>
+<span class="comment">// using boost::math::normal; // Would create an ambguity between</span>
+<span class="comment">// boost::math::normal_distribution<RealType> boost::math::normal and</span>
+<span class="comment">// 'anonymous-namespace'::normal'.</span>
+
+<span class="keyword">namespace</span>
+<span class="special">{</span> <span class="comment">// anonymous or unnnamed (rather than named as in policy_eg_6.cpp).</span>
+
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+ <span class="comment">// using boost::math::policies::errno_on_error; // etc.</span>
+ <span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="comment">// return infinity and set errno rather than throw:</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span>
+ <span class="comment">// Don't promote double -> long double internally:</span>
+ <span class="identifier">promote_double</span><span class="special"><</span><span class="keyword">false</span><span class="special">>,</span>
+ <span class="comment">// Return the closest integer result for discrete quantiles:</span>
+ <span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_nearest</span><span class="special">></span>
+ <span class="special">></span> <span class="identifier">my_policy</span><span class="special">;</span>
+
+ <span class="identifier">BOOST_MATH_DECLARE_DISTRIBUTIONS</span><span class="special">(</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">my_policy</span><span class="special">)</span>
+
+<span class="special">}</span> <span class="comment">// close namespace my_namespace</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="comment">// Construct distribution with something we know will overflow.</span>
+ <span class="identifier">normal</span> <span class="identifier">norm</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span> <span class="comment">// using 'anonymous-namespace'::normal</span>
+ <span class="identifier">errno</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of quantile(norm, 0) is: "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">norm</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">errno</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of quantile(norm, 1) is: "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">norm</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno = "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">//</span>
+ <span class="comment">// Now try a discrete distribution:</span>
+ <span class="identifier">binomial</span> <span class="identifier">binom</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of quantile(binom, 0.05) is: "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom</span><span class="special">,</span> <span class="number">0.05</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of quantile(complement(binom, 0.05)) is: "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">binom</span><span class="special">,</span> <span class="number">0.05</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="ad_hoc_sf_policies.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="user_def_err_pol.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/policy_tut_defaults.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/policy_tut_defaults.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,131 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Policies Have Sensible Defaults</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="prev" href="what_is_a_policy.html" title="So Just What is a Policy Anyway?">
+<link rel="next" href="policy_usage.html" title="So How are Policies Used Anyway?">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="what_is_a_policy.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="policy_usage.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial_policy_tut_defaults">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_tutorial.policy_tut_defaults"></a><a class="link" href="policy_tut_defaults.html" title="Policies Have Sensible Defaults">Policies
+ Have Sensible Defaults</a>
+</h3></div></div></div>
+<p>
+ Most of the time you can just ignore the policy framework.
+ </p>
+<p>
+ <span class="emphasis"><em>*The defaults for the various policies are as follows, if these
+ work OK for you then you can stop reading now!</em></span>
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">Domain Error</span></dt>
+<dd><p>
+ Throws a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code> exception.
+ </p></dd>
+<dt><span class="term">Pole Error</span></dt>
+<dd><p>
+ Occurs when a function is evaluated at a pole: throws a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code> exception.
+ </p></dd>
+<dt><span class="term">Overflow Error</span></dt>
+<dd><p>
+ Throws a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> exception.
+ </p></dd>
+<dt><span class="term">Underflow</span></dt>
+<dd><p>
+ Ignores the underflow, and returns zero.
+ </p></dd>
+<dt><span class="term">Denormalised Result</span></dt>
+<dd><p>
+ Ignores the fact that the result is denormalised, and returns it.
+ </p></dd>
+<dt><span class="term">Rounding Error</span></dt>
+<dd><p>
+ Throws a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">rounding_error</span></code> exception.
+ </p></dd>
+<dt><span class="term">Internal Evaluation Error</span></dt>
+<dd><p>
+ Throws a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">evaluation_error</span></code> exception.
+ </p></dd>
+<dt><span class="term">Indeterminate Result Error</span></dt>
+<dd><p>
+ Returns a result that depends on the function where the error occurred.
+ </p></dd>
+<dt><span class="term">Promotion of float to double</span></dt>
+<dd><p>
+ Does occur by default - gives full float precision results.
+ </p></dd>
+<dt><span class="term">Promotion of double to long double</span></dt>
+<dd><p>
+ Does occur by default if long double offers more precision than double.
+ </p></dd>
+<dt><span class="term">Precision of Approximation Used</span></dt>
+<dd><p>
+ By default uses an approximation that will result in the lowest level
+ of error for the type of the result.
+ </p></dd>
+<dt><span class="term">Behaviour of Discrete Quantiles</span></dt>
+<dd>
+<p>
+ The quantile function will by default return an integer result that
+ has been <span class="emphasis"><em>rounded outwards</em></span>. That is to say lower
+ quantiles (where the probability is less than 0.5) are rounded downward,
+ and upper quantiles (where the probability is greater than 0.5) are
+ rounded upwards. This behaviour ensures that if an X% quantile is requested,
+ then <span class="emphasis"><em>at least</em></span> the requested coverage will be present
+ in the central region, and <span class="emphasis"><em>no more than</em></span> the requested
+ coverage will be present in the tails.
+ </p>
+<p>
+ This behaviour can be changed so that the quantile functions are rounded
+ differently, or even return a real-valued result using <a class="link" href="../pol_overview.html" title="Policy Overview">Policies</a>.
+ It is strongly recommended that you read the tutorial <a class="link" href="understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a> before using the quantile
+ function on a discrete distribution. The <a class="link" href="../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">reference
+ docs</a> describe how to change the rounding policy for these distributions.
+ </p>
+</dd>
+</dl>
+</div>
+<p>
+ What's more, if you define your own policy type, then it automatically inherits
+ the defaults for any policies not explicitly set, so given:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// Define a policy that sets ::errno on overflow, and does</span>
+<span class="comment">// not promote double to long double internally:</span>
+<span class="comment">//</span>
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span> <span class="identifier">promote_double</span><span class="special"><</span><span class="keyword">false</span><span class="special">></span> <span class="special">></span> <span class="identifier">mypolicy</span><span class="special">;</span>
+</pre>
+<p>
+ then <code class="computeroutput"><span class="identifier">mypolicy</span></code> defines a policy
+ where only the overflow error handling and <code class="computeroutput"><span class="keyword">double</span></code>-promotion
+ policies differ from the defaults.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="what_is_a_policy.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="policy_usage.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/policy_usage.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/policy_usage.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>So How are Policies Used Anyway?</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="prev" href="policy_tut_defaults.html" title="Policies Have Sensible Defaults">
+<link rel="next" href="changing_policy_defaults.html" title="Changing the Policy Defaults">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="policy_tut_defaults.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="changing_policy_defaults.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial_policy_usage">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_tutorial.policy_usage"></a><a class="link" href="policy_usage.html" title="So How are Policies Used Anyway?">So How are Policies
+ Used Anyway?</a>
+</h3></div></div></div>
+<p>
+ The details follow later, but basically policies can be set by either:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Defining some macros that change the default behaviour: <span class="bold"><strong>this
+ is the recommended method for setting installation-wide policies</strong></span>.
+ </li>
+<li class="listitem">
+ By instantiating a distribution object with an explicit policy: this
+ is mainly reserved for ad hoc policy changes.
+ </li>
+<li class="listitem">
+ By passing a policy to a special function as an optional final argument:
+ this is mainly reserved for ad hoc policy changes.
+ </li>
+<li class="listitem">
+ By using some helper macros to define a set of functions or distributions
+ in the current namespace that use a specific policy: <span class="bold"><strong>this
+ is the recommended method for setting policies on a project- or translation-unit-wide
+ basis</strong></span>.
+ </li>
+</ul></div>
+<p>
+ The following sections introduce these methods in more detail.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="policy_tut_defaults.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="changing_policy_defaults.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/understand_dis_quant.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/understand_dis_quant.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,407 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Understanding Quantiles of Discrete Distributions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="prev" href="user_def_err_pol.html" title="Calling User Defined Error Handlers">
+<link rel="next" href="../pol_ref.html" title="Policy Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="user_def_err_pol.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../pol_ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial_understand_dis_quant">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_tutorial.understand_dis_quant"></a><a class="link" href="understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a>
+</h3></div></div></div>
+<p>
+ Discrete distributions present us with a problem when calculating the quantile:
+ we are starting from a continuous real-valued variable - the probability
+ - but the result (the value of the random variable) should really be discrete.
+ </p>
+<p>
+ Consider for example a Binomial distribution, with a sample size of 50, and
+ a success fraction of 0.5. There are a variety of ways we can plot a discrete
+ distribution, but if we plot the PDF as a step-function then it looks something
+ like this:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/binomial_pdf.png"></span>
+ </p>
+<p>
+ Now lets suppose that the user asks for a the quantile that corresponds to
+ a probability of 0.05, if we zoom in on the CDF for that region here's what
+ we see:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/binomial_quantile_1.png"></span>
+ </p>
+<p>
+ As can be seen there is no random variable that corresponds to a probability
+ of exactly 0.05, so we're left with two choices as shown in the figure:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ We could round the result down to 18.
+ </li>
+<li class="listitem">
+ We could round the result up to 19.
+ </li>
+</ul></div>
+<p>
+ In fact there's actually a third choice as well: we could "pretend"
+ that the distribution was continuous and return a real valued result: in
+ this case we would calculate a result of approximately 18.701 (this accurately
+ reflects the fact that the result is nearer to 19 than 18).
+ </p>
+<p>
+ By using policies we can offer any of the above as options, but that still
+ leaves the question: <span class="emphasis"><em>What is actually the right thing to do?</em></span>
+ </p>
+<p>
+ And in particular: <span class="emphasis"><em>What policy should we use by default?</em></span>
+ </p>
+<p>
+ In coming to an answer we should realise that:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Calculating an integer result is often much faster than calculating a
+ real-valued result: in fact in our tests it was up to 20 times faster.
+ </li>
+<li class="listitem">
+ Normally people calculate quantiles so that they can perform a test of
+ some kind: <span class="emphasis"><em>"If the random variable is less than N then
+ we can reject our null-hypothesis with 90% confidence."</em></span>
+ </li>
+</ul></div>
+<p>
+ So there is a genuine benefit to calculating an integer result as well as
+ it being "the right thing to do" from a philosophical point of
+ view. What's more if someone asks for a quantile at 0.05, then we can normally
+ assume that they are asking for <span class="emphasis"><em><span class="bold"><strong>at least</strong></span>
+ 95% of the probability to the right of the value chosen, and <span class="bold"><strong>no
+ more than</strong></span> 5% of the probability to the left of the value chosen.</em></span>
+ </p>
+<p>
+ In the above binomial example we would therefore round the result down to
+ 18.
+ </p>
+<p>
+ The converse applies to upper-quantiles: If the probability is greater than
+ 0.5 we would want to round the quantile up, <span class="emphasis"><em>so that <span class="bold"><strong>at
+ least</strong></span> the requested probability is to the left of the value returned,
+ and <span class="bold"><strong>no more than</strong></span> 1 - the requested probability
+ is to the right of the value returned.</em></span>
+ </p>
+<p>
+ Likewise for two-sided intervals, we would round lower quantiles down, and
+ upper quantiles up. This ensures that we have <span class="emphasis"><em>at least the requested
+ probability in the central region</em></span> and <span class="emphasis"><em>no more than 1
+ minus the requested probability in the tail areas.</em></span>
+ </p>
+<p>
+ For example, taking our 50 sample binomial distribution with a success fraction
+ of 0.5, if we wanted a two sided 90% confidence interval, then we would ask
+ for the 0.05 and 0.95 quantiles with the results <span class="emphasis"><em>rounded outwards</em></span>
+ so that <span class="emphasis"><em>at least 90% of the probability</em></span> is in the central
+ area:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/binomial_pdf_3.png"></span>
+ </p>
+<p>
+ So far so good, but there is in fact a trap waiting for the unwary here:
+ </p>
+<pre class="programlisting"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.05</span><span class="special">);</span>
+</pre>
+<p>
+ returns 18 as the result, which is what we would expect from the graph above,
+ and indeed there is no x greater than 18 for which:
+ </p>
+<pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="identifier">x</span><span class="special">)</span> <span class="special"><=</span> <span class="number">0.05</span><span class="special">;</span>
+</pre>
+<p>
+ However:
+ </p>
+<pre class="programlisting"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.95</span><span class="special">);</span>
+</pre>
+<p>
+ returns 31, and indeed while there is no x less than 31 for which:
+ </p>
+<pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">>=</span> <span class="number">0.95</span><span class="special">;</span>
+</pre>
+<p>
+ We might naively expect that for this symmetrical distribution the result
+ would be 32 (since 32 = 50 - 18), but we need to remember that the cdf of
+ the binomial is <span class="emphasis"><em>inclusive</em></span> of the random variable. So
+ while the left tail area <span class="emphasis"><em>includes</em></span> the quantile returned,
+ the right tail area always excludes an upper quantile value: since that "belongs"
+ to the central area.
+ </p>
+<p>
+ Look at the graph above to see what's going on here: the lower quantile of
+ 18 belongs to the left tail, so any value <= 18 is in the left tail. The
+ upper quantile of 31 on the other hand belongs to the central area, so the
+ tail area actually starts at 32, so any value > 31 is in the right tail.
+ </p>
+<p>
+ Therefore if U and L are the upper and lower quantiles respectively, then
+ a random variable X is in the tail area - where we would reject the null
+ hypothesis if:
+ </p>
+<pre class="programlisting"><span class="identifier">X</span> <span class="special"><=</span> <span class="identifier">L</span> <span class="special">||</span> <span class="identifier">X</span> <span class="special">></span> <span class="identifier">U</span>
+</pre>
+<p>
+ And the a variable X is inside the central region if:
+ </p>
+<pre class="programlisting"><span class="identifier">L</span> <span class="special"><</span> <span class="identifier">X</span> <span class="special"><=</span> <span class="identifier">U</span>
+</pre>
+<p>
+ The moral here is to <span class="emphasis"><em>always be very careful with your comparisons
+ when dealing with a discrete distribution</em></span>, and if in doubt, <span class="emphasis"><em>base
+ your comparisons on CDF's instead</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.pol_tutorial.understand_dis_quant.h0"></a>
+ <span class="phrase"><a name="math_toolkit.pol_tutorial.understand_dis_quant.other_rounding_policies_are_avai"></a></span><a class="link" href="understand_dis_quant.html#math_toolkit.pol_tutorial.understand_dis_quant.other_rounding_policies_are_avai">Other
+ Rounding Policies are Available</a>
+ </h5>
+<p>
+ As you would expect from a section on policies, you won't be surprised to
+ know that other rounding options are available:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">integer_round_outwards</span></dt>
+<dd>
+<p>
+ This is the default policy as described above: lower quantiles are
+ rounded down (probability < 0.5), and upper quantiles (probability
+ > 0.5) are rounded up.
+ </p>
+<p>
+ This gives <span class="emphasis"><em>no more than</em></span> the requested probability
+ in the tails, and <span class="emphasis"><em>at least</em></span> the requested probability
+ in the central area.
+ </p>
+</dd>
+<dt><span class="term">integer_round_inwards</span></dt>
+<dd>
+<p>
+ This is the exact opposite of the default policy: lower quantiles are
+ rounded up (probability < 0.5), and upper quantiles (probability
+ > 0.5) are rounded down.
+ </p>
+<p>
+ This gives <span class="emphasis"><em>at least</em></span> the requested probability
+ in the tails, and <span class="emphasis"><em>no more than</em></span> the requested probability
+ in the central area.
+ </p>
+</dd>
+<dt><span class="term">integer_round_down</span></dt>
+<dd><p>
+ This policy will always round the result down no matter whether it
+ is an upper or lower quantile
+ </p></dd>
+<dt><span class="term">integer_round_up</span></dt>
+<dd><p>
+ This policy will always round the result up no matter whether it is
+ an upper or lower quantile
+ </p></dd>
+<dt><span class="term">integer_round_nearest</span></dt>
+<dd><p>
+ This policy will always round the result to the nearest integer no
+ matter whether it is an upper or lower quantile
+ </p></dd>
+<dt><span class="term">real</span></dt>
+<dd><p>
+ This policy will return a real valued result for the quantile of a
+ discrete distribution: this is generally much slower than finding an
+ integer result but does allow for more sophisticated rounding policies.
+ </p></dd>
+</dl>
+</div>
+<p>
+ To understand how the rounding policies for the discrete distributions can
+ be used, we'll use the 50-sample binomial distribution with a success fraction
+ of 0.5 once again, and calculate all the possible quantiles at 0.05 and 0.95.
+ </p>
+<p>
+ Begin by including the needed headers (and some using statements for conciseness):
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fixed</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">right</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</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">binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ Next we'll bring the needed declarations into scope, and define distribution
+ types for all the available rounding policies:
+ </p>
+<pre class="programlisting"><span class="comment">// Avoid </span>
+<span class="comment">// using namespace std; // and </span>
+<span class="comment">// using namespace boost::math;</span>
+<span class="comment">// to avoid potential ambiguity of names, like binomial.</span>
+<span class="comment">// using namespace boost::math::policies; is small risk, but</span>
+<span class="comment">// the necessary items are brought into scope thus:</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial_distribution</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">discrete_quantile</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">integer_round_outwards</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">integer_round_down</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">integer_round_up</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">integer_round_nearest</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">integer_round_inwards</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">real</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial_distribution</span><span class="special">;</span> <span class="comment">// Not std::binomial_distribution.</span>
+
+<span class="keyword">typedef</span> <span class="identifier">binomial_distribution</span><span class="special"><</span>
+ <span class="keyword">double</span><span class="special">,</span>
+ <span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_outwards</span><span class="special">></span> <span class="special">></span> <span class="special">></span>
+ <span class="identifier">binom_round_outwards</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">binomial_distribution</span><span class="special"><</span>
+ <span class="keyword">double</span><span class="special">,</span>
+ <span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_inwards</span><span class="special">></span> <span class="special">></span> <span class="special">></span>
+ <span class="identifier">binom_round_inwards</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">binomial_distribution</span><span class="special"><</span>
+ <span class="keyword">double</span><span class="special">,</span>
+ <span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_down</span><span class="special">></span> <span class="special">></span> <span class="special">></span>
+ <span class="identifier">binom_round_down</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">binomial_distribution</span><span class="special"><</span>
+ <span class="keyword">double</span><span class="special">,</span>
+ <span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_up</span><span class="special">></span> <span class="special">></span> <span class="special">></span>
+ <span class="identifier">binom_round_up</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">binomial_distribution</span><span class="special"><</span>
+ <span class="keyword">double</span><span class="special">,</span>
+ <span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">integer_round_nearest</span><span class="special">></span> <span class="special">></span> <span class="special">></span>
+ <span class="identifier">binom_round_nearest</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">binomial_distribution</span><span class="special"><</span>
+ <span class="keyword">double</span><span class="special">,</span>
+ <span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">real</span><span class="special">></span> <span class="special">></span> <span class="special">></span>
+ <span class="identifier">binom_real_quantile</span><span class="special">;</span>
+</pre>
+<p>
+ Now let's set to work calling those quantiles:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"Testing rounding policies for a 50 sample binomial distribution,\n"</span>
+ <span class="string">"with a success fraction of 0.5.\n\n"</span>
+ <span class="string">"Lower quantiles are calculated at p = 0.05\n\n"</span>
+ <span class="string">"Upper quantiles at p = 0.95.\n\n"</span><span class="special">;</span>
+
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">25</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="string">"Policy"</span><span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="string">"Lower Quantile"</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="string">"Upper Quantile"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Test integer_round_outwards:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">25</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="string">"integer_round_outwards"</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_outwards</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.05</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_outwards</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.95</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Test integer_round_inwards:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">25</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="string">"integer_round_inwards"</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_inwards</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.05</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_inwards</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.95</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Test integer_round_down:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">25</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="string">"integer_round_down"</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_down</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.05</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_down</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.95</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Test integer_round_up:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">25</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="string">"integer_round_up"</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_up</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.05</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_up</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.95</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Test integer_round_nearest:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">25</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="string">"integer_round_nearest"</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_nearest</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.05</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_round_nearest</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.95</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Test real:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">25</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="string">"real"</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_real_quantile</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.05</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">18</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binom_real_quantile</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">),</span> <span class="number">0.95</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// int main()</span>
+</pre>
+<p>
+ Which produces the program output:
+ </p>
+<pre class="programlisting"> policy_eg_10.vcxproj -> J:\Cpp\MathToolkit\test\Math_test\Release\policy_eg_10.exe
+ Testing rounding policies for a 50 sample binomial distribution,
+ with a success fraction of 0.5.
+
+ Lower quantiles are calculated at p = 0.05
+
+ Upper quantiles at p = 0.95.
+
+ Policy Lower Quantile Upper Quantile
+ integer_round_outwards 18 31
+ integer_round_inwards 19 30
+ integer_round_down 18 30
+ integer_round_up 19 31
+ integer_round_nearest 19 30
+ real 18.701 30.299
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="user_def_err_pol.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../pol_ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/user_def_err_pol.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/user_def_err_pol.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,444 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Calling User Defined Error Handlers</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="prev" href="namespace_policies.html" title="Setting Policies at Namespace or Translation Unit Scope">
+<link rel="next" href="understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="namespace_policies.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="understand_dis_quant.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial_user_def_err_pol">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_tutorial.user_def_err_pol"></a><a class="link" href="user_def_err_pol.html" title="Calling User Defined Error Handlers">Calling User
+ Defined Error Handlers</a>
+</h3></div></div></div>
+<p>
+ Suppose we want our own user-defined error handlers rather than the any of
+ the default ones supplied by the library to be used. If we set the policy
+ for a specific type of error to <code class="computeroutput"><span class="identifier">user_error</span></code>
+ then the library will call a user-supplied error handler. These are forward
+ declared, but not defined in boost/math/policies/error_handling.hpp like
+ this:
+ </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">namespace</span> <span class="identifier">policies</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_domain_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_pole_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_overflow_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_underflow_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_denorm_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_evaluation_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">TargetType</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_rounding_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">TargetType</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_indeterminate_result_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ So out first job is to include the header we want to use, and then provide
+ definitions for our user-defined error handlers that we want to use. We only
+ provide our special domain and pole error handlers; other errors like overflow
+ and underflow use the default.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">hpp</span><span class="special">></span>
+
+<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">namespace</span> <span class="identifier">policies</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">T</span> <span class="identifier">user_domain_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span>
+ <span class="special">{</span> <span class="comment">// Ignoring function, message and val for this example, perhaps unhelpfully.</span>
+ <span class="identifier">cerr</span> <span class="special"><<</span> <span class="string">"Domain Error!"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">T</span> <span class="identifier">user_pole_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span>
+ <span class="special">{</span> <span class="comment">// Ignoring function, message and val for this example, perhaps unhelpfully.</span>
+ <span class="identifier">cerr</span> <span class="special"><<</span> <span class="string">"Pole Error!"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">}</span> <span class="comment">// namespace policies</span>
+<span class="special">}}</span> <span class="comment">// namespace boost{ namespace math</span>
+</pre>
+<p>
+ Now we'll need to define a suitable policy that will call these handlers,
+ and define some forwarding functions that make use of the policy:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span><span class="special">{</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">user_error</span><span class="special">>,</span>
+ <span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">user_error</span><span class="special">></span>
+<span class="special">></span> <span class="identifier">user_error_policy</span><span class="special">;</span>
+
+<span class="identifier">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span><span class="special">(</span><span class="identifier">user_error_policy</span><span class="special">)</span>
+
+<span class="special">}</span> <span class="comment">// close unnamed namespace</span>
+</pre>
+<p>
+ We now have a set of forwarding functions defined in an unnamed namespace
+ that all look something like this:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">promote_args</span><span class="special"><</span><span class="identifier">RT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">RT</span> <span class="identifier">z</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">user_error_policy</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+<p>
+ So that when we call <code class="computeroutput"><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span></code>
+ we really end up calling <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span>
+ <span class="identifier">user_error_policy</span><span class="special">())</span></code>,
+ and any errors will get directed to our own error handlers.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of erf_inv(-10) is: "</span>
+ <span class="special"><<</span> <span class="identifier">erf_inv</span><span class="special">(-</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(-10) is: "</span>
+ <span class="special"><<</span> <span class="identifier">tgamma</span><span class="special">(-</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Which outputs:
+ </p>
+<pre class="programlisting"> Domain Error!
+ Pole Error!
+ Result of erf_inv(-10) is: 1.#QNAN
+ Result of tgamma(-10) is: 1.#QNAN
+</pre>
+<p>
+ The previous example was all well and good, but the custom error handlers
+ didn't really do much of any use. In this example we'll implement all the
+ custom handlers and show how the information provided to them can be used
+ to generate nice formatted error messages.
+ </p>
+<p>
+ Each error handler has the general form:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_</span><span class="emphasis"><em>error_type</em></span><span class="special">(</span>
+ <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
+</pre>
+<p>
+ and accepts three arguments:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">const char* function</span></dt>
+<dd><p>
+ The name of the function that raised the error, this string contains
+ one or more %1% format specifiers that should be replaced by the name
+ of real type T, like float or double.
+ </p></dd>
+<dt><span class="term">const char* message</span></dt>
+<dd><p>
+ A message associated with the error, normally this contains a %1% format
+ specifier that should be replaced with the value of <span class="emphasis"><em>value</em></span>:
+ however note that overflow and underflow messages do not contain this
+ %1% specifier (since the value of <span class="emphasis"><em>value</em></span> is immaterial
+ in these cases).
+ </p></dd>
+<dt><span class="term">const T& value</span></dt>
+<dd><p>
+ The value that caused the error: either an argument to the function
+ if this is a domain or pole error, the tentative result if this is
+ a denorm or evaluation error, or zero or infinity for underflow or
+ overflow errors.
+ </p></dd>
+</dl>
+</div>
+<p>
+ As before we'll include the headers we need first:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">hpp</span><span class="special">></span>
+</pre>
+<p>
+ Next we'll implement our own error handlers for each type of error, starting
+ with domain errors:
+ </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">namespace</span> <span class="identifier">policies</span>
+<span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_domain_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span>
+<span class="special">{</span>
+</pre>
+<p>
+ We'll begin with a bit of defensive programming in case function or message
+ are empty:
+ </p>
+<pre class="programlisting"><span class="keyword">if</span><span class="special">(</span><span class="identifier">function</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">function</span> <span class="special">=</span> <span class="string">"Unknown function with arguments of type %1%"</span><span class="special">;</span>
+<span class="keyword">if</span><span class="special">(</span><span class="identifier">message</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">message</span> <span class="special">=</span> <span class="string">"Cause unknown with bad argument %1%"</span><span class="special">;</span>
+</pre>
+<p>
+ Next we'll format the name of the function with the name of type T, perhaps
+ double:
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">msg</span><span class="special">(</span><span class="string">"Error in function "</span><span class="special">);</span>
+<span class="identifier">msg</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span><span class="special">(</span><span class="identifier">function</span><span class="special">)</span> <span class="special">%</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()).</span><span class="identifier">str</span><span class="special">();</span>
+</pre>
+<p>
+ Then likewise format the error message with the value of parameter <span class="emphasis"><em>val</em></span>,
+ making sure we output all the potentially significant digits of <span class="emphasis"><em>val</em></span>:
+ </p>
+<pre class="programlisting"><span class="identifier">msg</span> <span class="special">+=</span> <span class="string">": \n"</span><span class="special">;</span>
+<span class="keyword">int</span> <span class="identifier">prec</span> <span class="special">=</span> <span class="number">2</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special">*</span> <span class="number">30103UL</span><span class="special">)</span> <span class="special">/</span> <span class="number">100000UL</span><span class="special">;</span>
+<span class="comment">// int prec = std::numeric_limits<T>::max_digits10; // For C++0X Standard Library</span>
+<span class="identifier">msg</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span><span class="special">(</span><span class="identifier">message</span><span class="special">)</span> <span class="special">%</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">io</span><span class="special">::</span><span class="identifier">group</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">prec</span><span class="special">),</span> <span class="identifier">val</span><span class="special">)).</span><span class="identifier">str</span><span class="special">();</span>
+</pre>
+<p>
+ Now we just have to do something with the message, we could throw an exception,
+ but for the purposes of this example we'll just dump the message to std::cerr:
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special"><<</span> <span class="identifier">msg</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Finally the only sensible value we can return from a domain error is a NaN:
+ </p>
+<pre class="programlisting"> <span class="keyword">return</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Pole errors are essentially a special case of domain errors, so in this example
+ we'll just return the result of a domain error:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_pole_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">user_domain_error</span><span class="special">(</span><span class="identifier">function</span><span class="special">,</span> <span class="identifier">message</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Overflow errors are very similar to domain errors, except that there's no
+ %1% format specifier in the <span class="emphasis"><em>message</em></span> parameter:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_overflow_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">function</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">function</span> <span class="special">=</span> <span class="string">"Unknown function with arguments of type %1%"</span><span class="special">;</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">message</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">message</span> <span class="special">=</span> <span class="string">"Result of function is too large to represent"</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">msg</span><span class="special">(</span><span class="string">"Error in function "</span><span class="special">);</span>
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span><span class="special">(</span><span class="identifier">function</span><span class="special">)</span> <span class="special">%</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()).</span><span class="identifier">str</span><span class="special">();</span>
+
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="string">": \n"</span><span class="special">;</span>
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="identifier">message</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special"><<</span> <span class="identifier">msg</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Value passed to the function is an infinity, just return it:</span>
+ <span class="keyword">return</span> <span class="identifier">val</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Underflow errors are much the same as overflow:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_underflow_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">function</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">function</span> <span class="special">=</span> <span class="string">"Unknown function with arguments of type %1%"</span><span class="special">;</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">message</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">message</span> <span class="special">=</span> <span class="string">"Result of function is too small to represent"</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">msg</span><span class="special">(</span><span class="string">"Error in function "</span><span class="special">);</span>
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span><span class="special">(</span><span class="identifier">function</span><span class="special">)</span> <span class="special">%</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()).</span><span class="identifier">str</span><span class="special">();</span>
+
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="string">": \n"</span><span class="special">;</span>
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="identifier">message</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special"><<</span> <span class="identifier">msg</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Value passed to the function is zero, just return it:</span>
+ <span class="keyword">return</span> <span class="identifier">val</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Denormalised results are much the same as underflow:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_denorm_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">function</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">function</span> <span class="special">=</span> <span class="string">"Unknown function with arguments of type %1%"</span><span class="special">;</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">message</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">message</span> <span class="special">=</span> <span class="string">"Result of function is denormalised"</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">msg</span><span class="special">(</span><span class="string">"Error in function "</span><span class="special">);</span>
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span><span class="special">(</span><span class="identifier">function</span><span class="special">)</span> <span class="special">%</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()).</span><span class="identifier">str</span><span class="special">();</span>
+
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="string">": \n"</span><span class="special">;</span>
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="identifier">message</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special"><<</span> <span class="identifier">msg</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// Value passed to the function is denormalised, just return it:</span>
+ <span class="keyword">return</span> <span class="identifier">val</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Which leaves us with evaluation errors: these occur when an internal error
+ occurs that prevents the function being fully evaluated. The parameter <span class="emphasis"><em>val</em></span>
+ contains the closest approximation to the result found so far:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_evaluation_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">function</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">function</span> <span class="special">=</span> <span class="string">"Unknown function with arguments of type %1%"</span><span class="special">;</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">message</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="identifier">message</span> <span class="special">=</span> <span class="string">"An internal evaluation error occurred with "</span>
+ <span class="string">"the best value calculated so far of %1%"</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">msg</span><span class="special">(</span><span class="string">"Error in function "</span><span class="special">);</span>
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span><span class="special">(</span><span class="identifier">function</span><span class="special">)</span> <span class="special">%</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()).</span><span class="identifier">str</span><span class="special">();</span>
+
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="string">": \n"</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">prec</span> <span class="special">=</span> <span class="number">2</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special">*</span> <span class="number">30103UL</span><span class="special">)</span> <span class="special">/</span> <span class="number">100000UL</span><span class="special">;</span>
+ <span class="comment">// int prec = std::numeric_limits<T>::max_digits10; // For C++0X Standard Library</span>
+ <span class="identifier">msg</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span><span class="special">(</span><span class="identifier">message</span><span class="special">)</span> <span class="special">%</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">io</span><span class="special">::</span><span class="identifier">group</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">prec</span><span class="special">),</span> <span class="identifier">val</span><span class="special">)).</span><span class="identifier">str</span><span class="special">();</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special"><<</span> <span class="identifier">msg</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// What do we return here? This is generally a fatal error, that should never occur,</span>
+ <span class="comment">// so we just return a NaN for the purposes of the example:</span>
+ <span class="keyword">return</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
+<span class="special">}</span>
+
+<span class="special">}</span> <span class="comment">// policies</span>
+<span class="special">}}</span> <span class="comment">// boost::math</span>
+</pre>
+<p>
+ Now we'll need to define a suitable policy that will call these handlers,
+ and define some forwarding functions that make use of the policy:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span>
+<span class="special">{</span> <span class="comment">// unnamed.</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span>
+ <span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">user_error</span><span class="special">>,</span>
+ <span class="identifier">pole_error</span><span class="special"><</span><span class="identifier">user_error</span><span class="special">>,</span>
+ <span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">user_error</span><span class="special">>,</span>
+ <span class="identifier">underflow_error</span><span class="special"><</span><span class="identifier">user_error</span><span class="special">>,</span>
+ <span class="identifier">denorm_error</span><span class="special"><</span><span class="identifier">user_error</span><span class="special">>,</span>
+ <span class="identifier">evaluation_error</span><span class="special"><</span><span class="identifier">user_error</span><span class="special">></span>
+<span class="special">></span> <span class="identifier">user_error_policy</span><span class="special">;</span>
+
+<span class="identifier">BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS</span><span class="special">(</span><span class="identifier">user_error_policy</span><span class="special">)</span>
+
+<span class="special">}</span> <span class="comment">// unnamed namespace</span>
+</pre>
+<p>
+ We now have a set of forwarding functions, defined in an unnamed namespace,
+ that all look something like this:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">promote_args</span><span class="special"><</span><span class="identifier">RT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">RT</span> <span class="identifier">z</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">user_error_policy</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+<p>
+ So that when we call <code class="computeroutput"><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span></code>
+ we really end up calling <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span>
+ <span class="identifier">user_error_policy</span><span class="special">())</span></code>,
+ and any errors will get directed to our own error handlers:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="comment">// Raise a domain error:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of erf_inv(-10) is: "</span>
+ <span class="special"><<</span> <span class="identifier">erf_inv</span><span class="special">(-</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Raise a pole error:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(-10) is: "</span>
+ <span class="special"><<</span> <span class="identifier">tgamma</span><span class="special">(-</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Raise an overflow error:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(3000) is: "</span>
+ <span class="special"><<</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="number">3000</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Raise an underflow error:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Result of tgamma(-190.5) is: "</span>
+ <span class="special"><<</span> <span class="identifier">tgamma</span><span class="special">(-</span><span class="number">190.5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Unfortunately we can't predicably raise a denormalised</span>
+ <span class="comment">// result, nor can we raise an evaluation error in this example</span>
+ <span class="comment">// since these should never really occur!</span>
+<span class="special">}</span> <span class="comment">// int main()</span>
+</pre>
+<p>
+ Which outputs:
+ </p>
+<pre class="programlisting">Error in function boost::math::erf_inv<double>(double, double):
+Argument outside range [-1, 1] in inverse erf function (got p=-10).
+Result of erf_inv(-10) is: 1.#QNAN
+
+Error in function boost::math::tgamma<long double>(long double):
+Evaluation of tgamma at a negative integer -10.
+Result of tgamma(-10) is: 1.#QNAN
+
+Error in function boost::math::tgamma<long double>(long double):
+Result of tgamma is too large to represent.
+Error in function boost::math::tgamma<double>(double):
+Result of function is too large to represent
+Result of tgamma(3000) is: 1.#INF
+
+Error in function boost::math::tgamma<long double>(long double):
+Result of tgamma is too large to represent.
+Error in function boost::math::tgamma<long double>(long double):
+Result of tgamma is too small to represent.
+Result of tgamma(-190.5) is: 0
+</pre>
+<p>
+ Notice how some of the calls result in an error handler being called more
+ than once, or for more than one handler to be called: this is an artefact
+ of the fact that many functions are implemented in terms of one or more sub-routines
+ each of which may have it's own error handling. For example <code class="computeroutput"><span class="identifier">tgamma</span><span class="special">(-</span><span class="number">190.5</span><span class="special">)</span></code> is implemented
+ in terms of <code class="computeroutput"><span class="identifier">tgamma</span><span class="special">(</span><span class="number">190.5</span><span class="special">)</span></code> - which
+ overflows - the reflection formula for <code class="computeroutput"><span class="identifier">tgamma</span></code>
+ then notices that it is dividing by infinity and so underflows.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="namespace_policies.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="understand_dis_quant.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/what_is_a_policy.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/pol_tutorial/what_is_a_policy.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,78 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>So Just What is a Policy Anyway?</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="prev" href="../pol_tutorial.html" title="Policy Tutorial">
+<link rel="next" href="policy_tut_defaults.html" title="Policies Have Sensible Defaults">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../pol_tutorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="policy_tut_defaults.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_pol_tutorial_what_is_a_policy">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.pol_tutorial.what_is_a_policy"></a><a class="link" href="what_is_a_policy.html" title="So Just What is a Policy Anyway?">So Just What
+ is a Policy Anyway?</a>
+</h3></div></div></div>
+<p>
+ A policy is a compile-time mechanism for customising the behaviour of a special
+ function, or a statistical distribution. With Policies you can control:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ What action to take when an error occurs.
+ </li>
+<li class="listitem">
+ What happens when you call a function that is mathematically undefined
+ (for example, if you ask for the mean of a Cauchy distribution).
+ </li>
+<li class="listitem">
+ What happens when you ask for a quantile of a discrete distribution.
+ </li>
+<li class="listitem">
+ Whether the library is allowed to internally promote <code class="computeroutput"><span class="keyword">float</span></code>
+ to <code class="computeroutput"><span class="keyword">double</span></code> and <code class="computeroutput"><span class="keyword">double</span></code> to <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> in order to improve precision.
+ </li>
+<li class="listitem">
+ What precision to use when calculating the result.
+ </li>
+</ul></div>
+<p>
+ Some of these policies could arguably be runtime variables, but then we couldn't
+ use compile-time dispatch internally to select the best evaluation method
+ for the given policies.
+ </p>
+<p>
+ For this reason a Policy is a <span class="emphasis"><em>type</em></span>: in fact it's an
+ instance of the class template <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><></span></code>. This class is just a compile-time-container
+ of user-selected policies (sometimes called a type-list):
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// Define a policy that sets ::errno on overflow, and does</span>
+<span class="comment">// not promote double to long double internally:</span>
+<span class="comment">//</span>
+<span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">errno_on_error</span><span class="special">>,</span> <span class="identifier">promote_double</span><span class="special"><</span><span class="keyword">false</span><span class="special">></span> <span class="special">></span> <span class="identifier">mypolicy</span><span class="special">;</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../pol_tutorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../pol_tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="policy_tut_defaults.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Basic Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="expint/expint_i.html" title="Exponential Integral Ei">
+<link rel="next" href="powers/sin_pi.html" title="sin_pi">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="expint/expint_i.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="powers/sin_pi.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.powers"></a><a class="link" href="powers.html" title="Basic Functions">Basic Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">sin_pi</span></dt>
+<dt><span class="section">cos_pi</span></dt>
+<dt><span class="section">log1p</span></dt>
+<dt><span class="section">expm1</span></dt>
+<dt><span class="section">cbrt</span></dt>
+<dt><span class="section">sqrt1pm1</span></dt>
+<dt><span class="section">powm1</span></dt>
+<dt><span class="section">hypot</span></dt>
+<dt><span class="section"><a href="powers/ct_pow.html">Compile Time Power of a Runtime
+ Base</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="expint/expint_i.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="powers/sin_pi.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers/cbrt.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers/cbrt.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,87 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>cbrt</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../powers.html" title="Basic Functions">
+<link rel="prev" href="expm1.html" title="expm1">
+<link rel="next" href="sqrt1pm1.html" title="sqrt1pm1">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="expm1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sqrt1pm1.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers_cbrt">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.powers.cbrt"></a><a class="link" href="cbrt.html" title="cbrt">cbrt</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">cbrt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cbrt</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cbrt</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns the cubed root of x: x<sup>1/3</sup>.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return is <code class="computeroutput"><span class="keyword">double</span></code>
+ when <span class="emphasis"><em>x</em></span> is an integer type and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ Implemented using Halley iteration.
+ </p>
+<p>
+ The following graph illustrates the behaviour of cbrt:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/cbrt.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.powers.cbrt.h0"></a>
+ <span class="phrase"><a name="math_toolkit.powers.cbrt.accuracy"></a></span><a class="link" href="cbrt.html#math_toolkit.powers.cbrt.accuracy">Accuracy</a>
+ </h5>
+<p>
+ For built in floating-point types <code class="computeroutput"><span class="identifier">cbrt</span></code>
+ should have approximately 2 epsilon accuracy.
+ </p>
+<h5>
+<a name="math_toolkit.powers.cbrt.h1"></a>
+ <span class="phrase"><a name="math_toolkit.powers.cbrt.testing"></a></span><a class="link" href="cbrt.html#math_toolkit.powers.cbrt.testing">Testing</a>
+ </h5>
+<p>
+ A mixture of spot test sanity checks, and random high precision test values
+ calculated using NTL::RR at 1000-bit precision.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="expm1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sqrt1pm1.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers/cos_pi.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers/cos_pi.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>cos_pi</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../powers.html" title="Basic Functions">
+<link rel="prev" href="sin_pi.html" title="sin_pi">
+<link rel="next" href="log1p.html" title="log1p">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sin_pi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="log1p.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers_cos_pi">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.powers.cos_pi"></a><a class="link" href="cos_pi.html" title="cos_pi">cos_pi</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">cos_pi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cos_pi</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cos_pi</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns the cosine of <span class="emphasis"><em>πx</em></span>.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return is <code class="computeroutput"><span class="keyword">double</span></code>
+ when <span class="emphasis"><em>x</em></span> is an integer type and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function performs exact all-integer arithmetic argument reduction before
+ computing the cosine of <span class="emphasis"><em>πx</em></span>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sin_pi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="log1p.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers/ct_pow.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers/ct_pow.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,255 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Compile Time Power of a Runtime Base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../powers.html" title="Basic Functions">
+<link rel="prev" href="hypot.html" title="hypot">
+<link rel="next" href="../sinc.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="hypot.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../sinc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers_ct_pow">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.powers.ct_pow"></a><a class="link" href="ct_pow.html" title="Compile Time Power of a Runtime Base">Compile Time Power of a Runtime
+ Base</a>
+</h3></div></div></div>
+<p>
+ The <code class="computeroutput"><span class="identifier">pow</span></code> function effectively
+ computes the compile-time integral power of a run-time base.
+ </p>
+<h5>
+<a name="math_toolkit.powers.ct_pow.h0"></a>
+ <span class="phrase"><a name="math_toolkit.powers.ct_pow.synopsis"></a></span><a class="link" href="ct_pow.html#math_toolkit.powers.ct_pow.synopsis">Synopsis</a>
+ </h5>
+<p>
+ #include <boost/math/special_functions/pow.hpp>
+ </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"><</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">base</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">base</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">policy</span><span class="special">);</span>
+
+<span class="special">}}</span>
+</pre>
+<h5>
+<a name="math_toolkit.powers.ct_pow.h1"></a>
+ <span class="phrase"><a name="math_toolkit.powers.ct_pow.rationale_and_usage"></a></span><a class="link" href="ct_pow.html#math_toolkit.powers.ct_pow.rationale_and_usage">Rationale
+ and Usage</a>
+ </h5>
+<p>
+ Computing the power of a number with an exponent that is known at compile
+ time is a common need for programmers. In such cases, the usual method is
+ to avoid the overhead implied by the <code class="computeroutput"><span class="identifier">pow</span></code>,
+ <code class="computeroutput"><span class="identifier">powf</span></code> and <code class="computeroutput"><span class="identifier">powl</span></code>
+ C functions by hardcoding an expression such as:
+ </p>
+<pre class="programlisting"><span class="comment">// Hand-written 8th power of a 'base' variable</span>
+<span class="keyword">double</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">;</span>
+</pre>
+<p>
+ However, this kind of expression is not really readable (knowing the value
+ of the exponent involves counting the number of occurrences of <span class="emphasis"><em>base</em></span>),
+ error-prone (it's easy to forget an occurrence), syntactically bulky, and
+ non-optimal in terms of performance.
+ </p>
+<p>
+ The pow function of Boost.Math helps writing this kind expression along with
+ solving all the problems listed above:
+ </p>
+<pre class="programlisting"><span class="comment">// 8th power of a 'base' variable using math::pow</span>
+<span class="keyword">double</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">pow</span><span class="special"><</span><span class="number">8</span><span class="special">>(</span><span class="identifier">base</span><span class="special">);</span>
+</pre>
+<p>
+ The expression is now shorter, easier to read, safer, and even faster. Indeed,
+ <code class="computeroutput"><span class="identifier">pow</span></code> will compute the expression
+ such that only log2(N) products are made for a power of N. For instance in
+ the example above, the resulting expression will be the same as if we had
+ written this, with only one computation of each identical subexpression:
+ </p>
+<pre class="programlisting"><span class="comment">// Internal effect of pow<8>(base)</span>
+<span class="keyword">double</span> <span class="identifier">result</span> <span class="special">=</span> <span class="special">((</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">)*(</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">))*((</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">)*(</span><span class="identifier">base</span><span class="special">*</span><span class="identifier">base</span><span class="special">));</span>
+</pre>
+<p>
+ Only 3 different products were actually computed.
+ </p>
+<h5>
+<a name="math_toolkit.powers.ct_pow.h2"></a>
+ <span class="phrase"><a name="math_toolkit.powers.ct_pow.return_type"></a></span><a class="link" href="ct_pow.html#math_toolkit.powers.ct_pow.return_type">Return
+ Type</a>
+ </h5>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>. For example:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If T is a <code class="computeroutput"><span class="keyword">float</span></code>, the return
+ type is a <code class="computeroutput"><span class="keyword">float</span></code>.
+ </li>
+<li class="listitem">
+ If T is a <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>,
+ the return type is a <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+ </li>
+<li class="listitem">
+ Otherwise, the return type is a <code class="computeroutput"><span class="keyword">double</span></code>.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.powers.ct_pow.h3"></a>
+ <span class="phrase"><a name="math_toolkit.powers.ct_pow.policies"></a></span><a class="link" href="ct_pow.html#math_toolkit.powers.ct_pow.policies">Policies</a>
+ </h5>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.powers.ct_pow.h4"></a>
+ <span class="phrase"><a name="math_toolkit.powers.ct_pow.error_handling"></a></span><a class="link" href="ct_pow.html#math_toolkit.powers.ct_pow.error_handling">Error
+ Handling</a>
+ </h5>
+<p>
+ Two cases of errors can occur when using <code class="computeroutput"><span class="identifier">pow</span></code>:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ In case of null base and negative exponent, an <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
+ occurs since this operation is a division by 0 (it equals to 1/0).
+ </li>
+<li class="listitem">
+ In case of null base and null exponent, an <a class="link" href="../error_handling.html#math_toolkit.error_handling.indeterminate_result_error">indeterminate_result_error</a>
+ occurs since the result of this operation is indeterminate. Those errors
+ follow the <a class="link" href="../error_handling.html" title="Error Handling">general policies
+ of error handling in Boost.Math</a>.
+ </li>
+</ul></div>
+<p>
+ The default overflow error policy is <code class="computeroutput"><span class="identifier">throw_on_error</span></code>.
+ A call like <code class="computeroutput"><span class="identifier">pow</span><span class="special"><-</span><span class="number">2</span><span class="special">>(</span><span class="number">0</span><span class="special">)</span></code> will thus throw a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code>
+ exception. As shown in the link given above, other error handling policies
+ can be used:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">errno_on_error</span></code>: Sets
+ <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">ERANGE</span></code> and returns
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code>.
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code>: Returns
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code>.
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">user_error</span></code>: Returns the
+ result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_overflow_error</span></code>: this function
+ must be defined by the user.
+ </li>
+</ul></div>
+<p>
+ The default indeterminate result error policy is <code class="computeroutput"><span class="identifier">ignore_error</span></code>,
+ which for this function returns 1 since it's the most commonly chosen result
+ for a power of 0. Here again, other error handling policies can be used:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">throw_on_error</span></code>: Throws
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">errno_on_error</span></code>: Sets
+ <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns 1.
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">user_error</span></code>: Returns the
+ result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_indeterminate_result_error</span></code>: this
+ function must be defined by the user.
+ </li>
+</ul></div>
+<p>
+ Here is an example of error handling customization where we want to specify
+ the result that has to be returned in case of error. We will thus use the
+ <code class="computeroutput"><span class="identifier">user_error</span></code> policy, by passing
+ as second argument an instance of an overflow_error policy templated with
+ <code class="computeroutput"><span class="identifier">user_error</span></code>:
+ </p>
+<pre class="programlisting"><span class="comment">// First we open the boost::math::policies namespace and define the `user_overflow_error`</span>
+<span class="comment">// by making it return the value we want in case of error (-1 here)</span>
+
+<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">namespace</span> <span class="identifier">policies</span> <span class="special">{</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">user_overflow_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&)</span>
+<span class="special">{</span> <span class="keyword">return</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">}}}</span>
+
+
+<span class="comment">// Then we invoke pow and indicate that we want to use the user_error policy</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">pow</span><span class="special"><-</span><span class="number">5</span><span class="special">>(</span><span class="identifier">base</span><span class="special">,</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">overflow_error</span><span class="special"><</span><span class="identifier">user_error</span><span class="special">></span> <span class="special">>());</span>
+
+<span class="comment">// We can now test the returned value and treat the special case if needed:</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">result</span> <span class="special">==</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// there was an error, do something...</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Another way is to redefine the default <code class="computeroutput"><span class="identifier">overflow_error</span></code>
+ policy by using the BOOST_MATH_OVERFLOW_ERROR_POLICY macro. Once the <code class="computeroutput"><span class="identifier">user_overflow_error</span></code> function is defined
+ as above, we can achieve the same result like this:
+ </p>
+<pre class="programlisting"><span class="comment">// Redefine the default error_overflow policy</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_OVERFLOW_ERROR_POLICY</span> <span class="identifier">user_error</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">pow</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="comment">// From this point, passing a policy in argument is no longer needed, a call like this one</span>
+<span class="comment">// will return -1 in case of error:</span>
+
+<span class="keyword">double</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">pow</span><span class="special"><-</span><span class="number">5</span><span class="special">>(</span><span class="identifier">base</span><span class="special">);</span>
+</pre>
+<h5>
+<a name="math_toolkit.powers.ct_pow.h5"></a>
+ <span class="phrase"><a name="math_toolkit.powers.ct_pow.acknowledgements"></a></span><a class="link" href="ct_pow.html#math_toolkit.powers.ct_pow.acknowledgements">Acknowledgements</a>
+ </h5>
+<p>
+ Bruno Lalande submitted this addition to Boost.Math.
+ </p>
+<p>
+ Thanks to Joaquín López Muñoz and Scott McMurray for their help in
+improving the implementation.
+ </p>
+<h5>
+<a name="math_toolkit.powers.ct_pow.h6"></a>
+ <span class="phrase"><a name="math_toolkit.powers.ct_pow.references"></a></span><a class="link" href="ct_pow.html#math_toolkit.powers.ct_pow.references">References</a>
+ </h5>
+<p>
+ D.E. Knuth, <span class="emphasis"><em>The Art of Computer Programming, Vol. 2: Seminumerical
+ Algorithms</em></span>, 2nd ed., Addison-Wesley, Reading, MA, 1981
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="hypot.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../sinc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers/expm1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers/expm1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>expm1</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../powers.html" title="Basic Functions">
+<link rel="prev" href="log1p.html" title="log1p">
+<link rel="next" href="cbrt.html" title="cbrt">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="log1p.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="cbrt.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers_expm1">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.powers.expm1"></a><a class="link" href="expm1.html" title="expm1">expm1</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">expm1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expm1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">expm1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns e<sup>x</sup> - 1.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return is <code class="computeroutput"><span class="keyword">double</span></code>
+ when <span class="emphasis"><em>x</em></span> is an integer type and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ For small x, then <code class="computeroutput">e<sup>x</sup></code> is very close to 1, as a result calculating <code class="computeroutput">e<sup>x</sup> - 1</code> results in
+ catastrophic cancellation errors when x is small. <code class="computeroutput"><span class="identifier">expm1</span></code>
+ calculates <code class="computeroutput">e<sup>x</sup> - 1</code> using rational approximations (for up to 128-bit long doubles),
+ otherwise via a series expansion when x is small (giving an accuracy of less
+ than 2ɛ).
+ </p>
+<p>
+ Finally when BOOST_HAS_EXPM1 is defined then the <code class="computeroutput"><span class="keyword">float</span><span class="special">/</span><span class="keyword">double</span><span class="special">/</span><span class="keyword">long</span> <span class="keyword">double</span></code>
+ specializations of this template simply forward to the platform's native
+ (POSIX) implementation of this function.
+ </p>
+<p>
+ The following graph illustrates the behaviour of expm1:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/expm1.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.powers.expm1.h0"></a>
+ <span class="phrase"><a name="math_toolkit.powers.expm1.accuracy"></a></span><a class="link" href="expm1.html#math_toolkit.powers.expm1.accuracy">Accuracy</a>
+ </h5>
+<p>
+ For built in floating point types <code class="computeroutput"><span class="identifier">expm1</span></code>
+ should have approximately 1 epsilon accuracy.
+ </p>
+<h5>
+<a name="math_toolkit.powers.expm1.h1"></a>
+ <span class="phrase"><a name="math_toolkit.powers.expm1.testing"></a></span><a class="link" href="expm1.html#math_toolkit.powers.expm1.testing">Testing</a>
+ </h5>
+<p>
+ A mixture of spot test sanity checks, and random high precision test values
+ calculated using NTL::RR at 1000-bit precision.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="log1p.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="cbrt.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers/hypot.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers/hypot.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,81 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>hypot</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../powers.html" title="Basic Functions">
+<link rel="prev" href="powm1.html" title="powm1">
+<link rel="next" href="ct_pow.html" title="Compile Time Power of a Runtime Base">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="powm1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ct_pow.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers_hypot">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.powers.hypot"></a><a class="link" href="hypot.html" title="hypot">hypot</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">hypot</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">hypot</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ <span class="bold"><strong>Effects: </strong></span> computes <span class="inlinemediaobject"><img src="../../../equations/hypot.png"></span>
+in such a way
+ as to avoid undue underflow and overflow.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../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 of different
+ types.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ When calculating <span class="inlinemediaobject"><img src="../../../equations/hypot.png"></span> it's quite easy for the intermediate terms to
+ either overflow or underflow, even though the result is in fact perfectly
+ representable.
+ </p>
+<h5>
+<a name="math_toolkit.powers.hypot.h0"></a>
+ <span class="phrase"><a name="math_toolkit.powers.hypot.implementation"></a></span><a class="link" href="hypot.html#math_toolkit.powers.hypot.implementation">Implementation</a>
+ </h5>
+<p>
+ The function is even and symmetric in x and y, so first take assume <span class="emphasis"><em>x,y
+ > 0</em></span> and <span class="emphasis"><em>x > y</em></span> (we can permute the arguments
+ if this is not the case).
+ </p>
+<p>
+ Then if <span class="emphasis"><em>x * ε   >= y</em></span> we can simply return <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ Otherwise the result is given by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/hypot2.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="powm1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ct_pow.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers/log1p.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers/log1p.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,110 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>log1p</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../powers.html" title="Basic Functions">
+<link rel="prev" href="cos_pi.html" title="cos_pi">
+<link rel="next" href="expm1.html" title="expm1">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="cos_pi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="expm1.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers_log1p">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.powers.log1p"></a><a class="link" href="log1p.html" title="log1p">log1p</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">log1p</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">log1p</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">log1p</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns the natural logarithm of <code class="computeroutput"><span class="identifier">x</span><span class="special">+</span><span class="number">1</span></code>.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return is <code class="computeroutput"><span class="keyword">double</span></code>
+ when <span class="emphasis"><em>x</em></span> is an integer type and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ There are many situations where it is desirable to compute <code class="computeroutput"><span class="identifier">log</span><span class="special">(</span><span class="identifier">x</span><span class="special">+</span><span class="number">1</span><span class="special">)</span></code>.
+ However, for small <code class="computeroutput"><span class="identifier">x</span></code> then
+ <code class="computeroutput"><span class="identifier">x</span><span class="special">+</span><span class="number">1</span></code> suffers from catastrophic cancellation errors
+ so that <code class="computeroutput"><span class="identifier">x</span><span class="special">+</span><span class="number">1</span> <span class="special">==</span> <span class="number">1</span></code>
+ and <code class="computeroutput"><span class="identifier">log</span><span class="special">(</span><span class="identifier">x</span><span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="special">==</span> <span class="number">0</span></code>,
+ when in fact for very small x, the best approximation to <code class="computeroutput"><span class="identifier">log</span><span class="special">(</span><span class="identifier">x</span><span class="special">+</span><span class="number">1</span><span class="special">)</span></code> would be
+ <code class="computeroutput"><span class="identifier">x</span></code>. <code class="computeroutput"><span class="identifier">log1p</span></code>
+ calculates the best approximation to <code class="computeroutput"><span class="identifier">log</span><span class="special">(</span><span class="number">1</span><span class="special">+</span><span class="identifier">x</span><span class="special">)</span></code> using
+ a Taylor series expansion for accuracy (less than 2ɛ). Alternatively note that
+ there are faster methods available, for example using the equivalence:
+ </p>
+<pre class="programlisting"><span class="identifier">log</span><span class="special">(</span><span class="number">1</span><span class="special">+</span><span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">log</span><span class="special">(</span><span class="number">1</span><span class="special">+</span><span class="identifier">x</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">/</span> <span class="special">((</span><span class="number">1</span><span class="special">+</span><span class="identifier">x</span><span class="special">)</span> <span class="special">-</span> <span class="number">1</span><span class="special">)</span>
+</pre>
+<p>
+ However, experience has shown that these methods tend to fail quite spectacularly
+ once the compiler's optimizations are turned on, consequently they are used
+ only when known not to break with a particular compiler. In contrast, the
+ series expansion method seems to be reasonably immune to optimizer-induced
+ errors.
+ </p>
+<p>
+ Finally when BOOST_HAS_LOG1P is defined then the <code class="computeroutput"><span class="keyword">float</span><span class="special">/</span><span class="keyword">double</span><span class="special">/</span><span class="keyword">long</span> <span class="keyword">double</span></code>
+ specializations of this template simply forward to the platform's native
+ (POSIX) implementation of this function.
+ </p>
+<p>
+ The following graph illustrates the behaviour of log1p:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/log1p.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.powers.log1p.h0"></a>
+ <span class="phrase"><a name="math_toolkit.powers.log1p.accuracy"></a></span><a class="link" href="log1p.html#math_toolkit.powers.log1p.accuracy">Accuracy</a>
+ </h5>
+<p>
+ For built in floating point types <code class="computeroutput"><span class="identifier">log1p</span></code>
+ should have approximately 1 epsilon accuracy.
+ </p>
+<h5>
+<a name="math_toolkit.powers.log1p.h1"></a>
+ <span class="phrase"><a name="math_toolkit.powers.log1p.testing"></a></span><a class="link" href="log1p.html#math_toolkit.powers.log1p.testing">Testing</a>
+ </h5>
+<p>
+ A mixture of spot test sanity checks, and random high precision test values
+ calculated using NTL::RR at 1000-bit precision.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="cos_pi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="expm1.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers/powm1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers/powm1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,89 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>powm1</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../powers.html" title="Basic Functions">
+<link rel="prev" href="sqrt1pm1.html" title="sqrt1pm1">
+<link rel="next" href="hypot.html" title="hypot">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sqrt1pm1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="hypot.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers_powm1">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.powers.powm1"></a><a class="link" href="powm1.html" title="powm1">powm1</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">powm1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">powm1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">powm1</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns x<sup>y </sup> - 1.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../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 dufferent types.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ There are two domains where this is useful: when y is very small, or when
+ x is close to 1.
+ </p>
+<p>
+ Implemented in terms of <code class="computeroutput"><span class="identifier">expm1</span></code>.
+ </p>
+<p>
+ The following graph illustrates the behaviour of powm1:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/powm1.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.powers.powm1.h0"></a>
+ <span class="phrase"><a name="math_toolkit.powers.powm1.accuracy"></a></span><a class="link" href="powm1.html#math_toolkit.powers.powm1.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Should have approximately 2-3 epsilon accuracy.
+ </p>
+<h5>
+<a name="math_toolkit.powers.powm1.h1"></a>
+ <span class="phrase"><a name="math_toolkit.powers.powm1.testing"></a></span><a class="link" href="powm1.html#math_toolkit.powers.powm1.testing">Testing</a>
+ </h5>
+<p>
+ A selection of random high precision test values calculated using NTL::RR
+ at 1000-bit precision.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sqrt1pm1.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="hypot.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers/sin_pi.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers/sin_pi.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>sin_pi</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../powers.html" title="Basic Functions">
+<link rel="prev" href="../powers.html" title="Basic Functions">
+<link rel="next" href="cos_pi.html" title="cos_pi">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../powers.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="cos_pi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers_sin_pi">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.powers.sin_pi"></a><a class="link" href="sin_pi.html" title="sin_pi">sin_pi</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">sin_pi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sin_pi</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sin_pi</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns the sine of <span class="emphasis"><em>πx</em></span>.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return is <code class="computeroutput"><span class="keyword">double</span></code>
+ when <span class="emphasis"><em>x</em></span> is an integer type and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function performs exact all-integer arithmetic argument reduction before
+ computing the sine of <span class="emphasis"><em>πx</em></span>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../powers.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="cos_pi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/powers/sqrt1pm1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/powers/sqrt1pm1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,92 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>sqrt1pm1</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../powers.html" title="Basic Functions">
+<link rel="prev" href="cbrt.html" title="cbrt">
+<link rel="next" href="powm1.html" title="powm1">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="cbrt.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="powm1.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_powers_sqrt1pm1">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.powers.sqrt1pm1"></a><a class="link" href="sqrt1pm1.html" title="sqrt1pm1">sqrt1pm1</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">sqrt1pm1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sqrt1pm1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sqrt1pm1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="identifier">sqrt</span><span class="special">(</span><span class="number">1</span><span class="special">+</span><span class="identifier">x</span><span class="special">)</span> <span class="special">-</span> <span class="number">1</span></code>.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return is <code class="computeroutput"><span class="keyword">double</span></code>
+ when <span class="emphasis"><em>x</em></span> is an integer type and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ This function is useful when you need the difference between sqrt(x) and
+ 1, when x is itself close to 1.
+ </p>
+<p>
+ Implemented in terms of <code class="computeroutput"><span class="identifier">log1p</span></code>
+ and <code class="computeroutput"><span class="identifier">expm1</span></code>.
+ </p>
+<p>
+ The following graph illustrates the behaviour of sqrt1pm1:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/sqrt1pm1.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.powers.sqrt1pm1.h0"></a>
+ <span class="phrase"><a name="math_toolkit.powers.sqrt1pm1.accuracy"></a></span><a class="link" href="sqrt1pm1.html#math_toolkit.powers.sqrt1pm1.accuracy">Accuracy</a>
+ </h5>
+<p>
+ For built in floating-point types <code class="computeroutput"><span class="identifier">sqrt1pm1</span></code>
+ should have approximately 3 epsilon accuracy.
+ </p>
+<h5>
+<a name="math_toolkit.powers.sqrt1pm1.h1"></a>
+ <span class="phrase"><a name="math_toolkit.powers.sqrt1pm1.testing"></a></span><a class="link" href="sqrt1pm1.html#math_toolkit.powers.sqrt1pm1.testing">Testing</a>
+ </h5>
+<p>
+ A selection of random high precision test values calculated using NTL::RR
+ at 1000-bit precision.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="cbrt.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../powers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="powm1.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/quat.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/quat.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,89 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Template Class quaternion</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="quat_synopsis.html" title="Synopsis">
+<link rel="next" href="spec.html" title="Quaternion Specializations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="quat_synopsis.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="spec.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_quat">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.quat"></a><a class="link" href="quat.html" title="Template Class quaternion">Template Class quaternion</a>
+</h2></div></div></div>
+<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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">quaternion</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="mem_typedef.html" title="Quaternion Member Typedefs">value_type</a><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="ident
ifier">requested_d</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">());</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span c
lass="special"><</span><span class="identifier">T</span><span class="special">>());</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="identifier">T</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">real</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">unreal</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">C_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">C_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}</span> <span class="comment">// namespace math</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="quat_synopsis.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="spec.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/quat_header.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/quat_header.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,39 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header File</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="quat_overview.html" title="Overview">
+<link rel="next" href="quat_synopsis.html" title="Synopsis">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="quat_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_synopsis.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_quat_header">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.quat_header"></a><a class="link" href="quat_header.html" title="Header File">Header File</a>
+</h2></div></div></div>
+<p>
+ The interface and implementation are both supplied by the header file quaternion.hpp.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="quat_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_synopsis.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/quat_history.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/quat_history.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,103 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>History</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="acknowledgement.html" title="Acknowledgements">
+<link rel="next" href="quat_todo.html" title="To Do">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgement.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_todo.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_quat_history">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.quat_history"></a><a class="link" href="quat_history.html" title="History">History</a>
+</h2></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ 1.5.9 - 13/5/2013: Incorporated into Boost.Math.
+ </li>
+<li class="listitem">
+ 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format.
+ </li>
+<li class="listitem">
+ 1.5.7 - 24/02/2003: transitionned to the unit test framework; <boost/config.hpp>
+ now included by the library header (rather than the test files).
+ </li>
+<li class="listitem">
+ 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis
+ Evlogimenos (alkis_at_[hidden]).
+ </li>
+<li class="listitem">
+ 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens
+ (michael_at_[hidden]); requires the /Za compiler option.
+ </li>
+<li class="listitem">
+ 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different
+ translation units); attempt at an improved compatibility with Microsoft
+ compilers, by Michael Stevens (michael_at_[hidden]) and Fredrik Blomqvist;
+ other compatibility fixes.
+ </li>
+<li class="listitem">
+ 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor
+ (gregod_at_[hidden]).
+ </li>
+<li class="listitem">
+ 1.5.2 - 07/07/2001: introduced namespace math.
+ </li>
+<li class="listitem">
+ 1.5.1 - 07/06/2001: (end of Boost review) now includes <boost/math/special_functions/sinc.hpp>
+ and <boost/math/special_functions/sinhc.hpp> instead of <boost/special_functions.hpp>;
+ corrected bug in sin (Daryle Walker); removed check for self-assignment
+ (Gary Powel); made converting functions explicit (Gary Powel); added overflow
+ guards for division operators and abs (Peter Schmitteckert); added sup
+ and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code.
+ </li>
+<li class="listitem">
+ 1.5.0 - 26/03/2001: boostification, inlining of all operators except input,
+ output and pow, fixed exception safety of some members (template version)
+ and output operator, added spherical, semipolar, multipolar, cylindrospherical
+ and cylindrical.
+ </li>
+<li class="listitem">
+ 1.4.0 - 09/01/2001: added tan and tanh.
+ </li>
+<li class="listitem">
+ 1.3.1 - 08/01/2001: cosmetic fixes.
+ </li>
+<li class="listitem">
+ 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink_at_[hidden])
+ algorithm.
+ </li>
+<li class="listitem">
+ 1.2.0 - 25/05/2000: fixed the division operators and output; changed many
+ signatures.
+ </li>
+<li class="listitem">
+ 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh.
+ </li>
+<li class="listitem">
+ 1.0.0 - 10/08/1999: first public version.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="acknowledgement.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_todo.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/quat_mem_fun.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/quat_mem_fun.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,226 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quaternion Member Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="mem_typedef.html" title="Quaternion Member Typedefs">
+<link rel="next" href="quat_non_mem.html" title="Quaternion Non-Member Operators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="mem_typedef.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_non_mem.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_quat_mem_fun">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.quat_mem_fun"></a><a class="link" href="quat_mem_fun.html" title="Quaternion Member Functions">Quaternion Member Functions</a>
+</h2></div></div></div>
+<h4>
+<a name="math_toolkit.quat_mem_fun.h0"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.constructors"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">Constructors</a>
+ </h4>
+<p>
+ Template version:
+ </p>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <
span class="special">=</span> <span class="identifier">T</span><span class="special">());</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</s
pan><span class="special">>());</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Float specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <span
class="special">=</span> <span class="number">0.0f</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">&
gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Double specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <span
class="special">=</span> <span class="number">0.0</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">dou
ble</span><span class="special">>());</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Long double specialization version:
+ </p>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="key
word">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span
><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>());</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ A default constructor is provided for each form, which initializes each component
+ to the default values for their type (i.e. zero for floating numbers). This
+ constructor can also accept one to four base type arguments. A constructor
+ is also provided to build quaternions from one or two complex numbers sharing
+ the same base type. The unspecialized template also sports a templarized copy
+ constructor, while the specialized forms have copy constructors from the other
+ two specializations, which are explicit when a risk of precision loss exists.
+ For the unspecialized form, the base type's constructors must not throw.
+ </p>
+<p>
+ Destructors and untemplated copy constructors (from the same type) are provided
+ by the compiler. Converting copy constructors make use of a templated helper
+ function in a "detail" subnamespace.
+ </p>
+<h4>
+<a name="math_toolkit.quat_mem_fun.h1"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.other_member_functions"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.other_member_functions">Other
+ member functions</a>
+ </h4>
+<h5>
+<a name="math_toolkit.quat_mem_fun.h2"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.real_and_unreal_parts"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">Real
+ and Unreal Parts</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">real</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">unreal</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Like complex number, quaternions do have a meaningful notion of "real
+ part", but unlike them there is no meaningful notion of "imaginary
+ part". Instead there is an "unreal part" which itself is a quaternion,
+ and usually nothing simpler (as opposed to the complex number case). These
+ are returned by the first two functions.
+ </p>
+<h5>
+<a name="math_toolkit.quat_mem_fun.h3"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.individual_real_components"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">Individual
+ Real Components</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">R_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_3</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_4</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ A quaternion having four real components, these are returned by these four
+ functions. Hence real and R_component_1 return the same value.
+ </p>
+<h5>
+<a name="math_toolkit.quat_mem_fun.h4"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.individual_complex_components"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">Individual
+ Complex Components</a>
+ </h5>
+<pre class="programlisting"><span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">C_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">C_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ A quaternion likewise has two complex components, and as we have seen above,
+ for any quaternion <span class="emphasis"><em><code class="literal">q = α + βi + γj + δk</code></em></span> we also have
+ <span class="emphasis"><em><code class="literal">q = (α + βi) + (γ + δi)j </code></em></span>. These functions return them.
+ The real part of <code class="computeroutput"><span class="identifier">q</span><span class="special">.</span><span class="identifier">C_component_1</span><span class="special">()</span></code>
+ is the same as <code class="computeroutput"><span class="identifier">q</span><span class="special">.</span><span class="identifier">real</span><span class="special">()</span></code>.
+ </p>
+<h4>
+<a name="math_toolkit.quat_mem_fun.h5"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.quaternion_member_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.quaternion_member_operators">Quaternion
+ Member Operators</a>
+ </h4>
+<h5>
+<a name="math_toolkit.quat_mem_fun.h6"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.assignment_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">Assignment
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the expected assignment, with type modification if necessary
+ (for instance, assigning from a base type will set the real part to that value,
+ and all other components to zero). For the unspecialized form, the base type's
+ assignment operators must not throw.
+ </p>
+<h5>
+<a name="math_toolkit.quat_mem_fun.h7"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.addition_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">Addition
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)+</span><span class="identifier">rhs</span></code>
+ and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ The unspecialized form has exception guards, which the specialized forms do
+ not, so as to insure exception safety. For the unspecialized form, the base
+ type's assignment operators must not throw.
+ </p>
+<h5>
+<a name="math_toolkit.quat_mem_fun.h8"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.subtraction_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">Subtraction
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)-</span><span class="identifier">rhs</span></code>
+ and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ The unspecialized form has exception guards, which the specialized forms do
+ not, so as to insure exception safety. For the unspecialized form, the base
+ type's assignment operators must not throw.
+ </p>
+<h5>
+<a name="math_toolkit.quat_mem_fun.h9"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.multiplication_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">Multiplication
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)*</span><span class="identifier">rhs</span></code>
+ <span class="bold"><strong>in this order</strong></span> (order is important as multiplication
+ is not commutative for quaternions) and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. The unspecialized form has exception guards,
+ which the specialized forms do not, so as to insure exception safety. For the
+ unspecialized form, the base type's assignment operators must not throw.
+ </p>
+<h5>
+<a name="math_toolkit.quat_mem_fun.h10"></a>
+ <span class="phrase"><a name="math_toolkit.quat_mem_fun.division_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">Division
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)*</span><span class="identifier">inverse_of</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">)</span></code>
+ <span class="bold"><strong>in this order</strong></span> (order is important as multiplication
+ is not commutative for quaternions) and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. The unspecialized form has exception guards,
+ which the specialized forms do not, so as to insure exception safety. For the
+ unspecialized form, the base type's assignment operators must not throw.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="mem_typedef.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_non_mem.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/quat_non_mem.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/quat_non_mem.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,214 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quaternion Non-Member Operators</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="quat_mem_fun.html" title="Quaternion Member Functions">
+<link rel="next" href="value_op.html" title="Quaternion Value Operations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="quat_mem_fun.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="value_op.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_quat_non_mem">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.quat_non_mem"></a><a class="link" href="quat_non_mem.html" title="Quaternion Non-Member Operators">Quaternion Non-Member Operators</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.quat_non_mem.h0"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.unary_plus"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.unary_plus">Unary
+ Plus</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This unary operator simply returns q.
+ </p>
+<h5>
+<a name="math_toolkit.quat_non_mem.h1"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.unary_minus"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.unary_minus">Unary
+ Minus</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This unary operator returns the opposite of q.
+ </p>
+<h5>
+<a name="math_toolkit.quat_non_mem.h2"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.binary_addition_operators"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_addition_operators">Binary
+ Addition Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="spe
cial">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifie
r">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">+=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.quat_non_mem.h3"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.binary_subtraction_operators"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_subtraction_operators">Binary Subtraction
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="spe
cial">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifie
r">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">-=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.quat_non_mem.h4"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.binary_multiplication_operators"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_multiplication_operators">Binary
+ Multiplication Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="spe
cial">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifie
r">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">*=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.quat_non_mem.h5"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.binary_division_operators"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_division_operators">Binary
+ Division Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="spe
cial">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifie
r">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">/=</span>
+ <span class="identifier">rhs</span></code>. It is of course still an error
+ to divide by zero...
+ </p>
+<h5>
+<a name="math_toolkit.quat_non_mem.h6"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.equality_operators"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.equality_operators">Equality
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These return true if and only if the four components of <code class="computeroutput"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span></code> are
+ equal to their counterparts in <code class="computeroutput"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">rhs</span><span class="special">)</span></code>. As
+ with any floating-type entity, this is essentially meaningless.
+ </p>
+<h5>
+<a name="math_toolkit.quat_non_mem.h7"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.inequality_operators"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.inequality_operators">Inequality
+ Operators</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These return true if and only if <code class="computeroutput"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">==</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">rhs</span><span class="special">)</span></code> is false. As with any floating-type entity,
+ this is essentially meaningless.
+ </p>
+<h5>
+<a name="math_toolkit.quat_non_mem.h8"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.stream_extractor"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.stream_extractor">Stream
+ Extractor</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">>></span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="identifier">q</span><s
pan class="special">);</span>
+</pre>
+<p>
+ Extracts a quaternion q of one of the following forms (with a, b, c and d of
+ type <code class="computeroutput"><span class="identifier">T</span></code>):
+ </p>
+<p>
+ <code class="literal">a (a), (a,b), (a,b,c), (a,b,c,d) (a,(c)), (a,(c,d)), ((a)), ((a),c),
+ ((a),(c)), ((a),(c,d)), ((a,b)), ((a,b),c), ((a,b),(c)), ((a,b),(c,d))</code>
+ </p>
+<p>
+ The input values must be convertible to <code class="computeroutput"><span class="identifier">T</span></code>.
+ If bad input is encountered, calls <code class="computeroutput"><span class="identifier">is</span><span class="special">.</span><span class="identifier">setstate</span><span class="special">(</span><span class="identifier">ios</span><span class="special">::</span><span class="identifier">failbit</span><span class="special">)</span></code>
+ (which may throw ios::failure (27.4.5.3)).
+ </p>
+<p>
+ <span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">is</span></code>.
+ </p>
+<p>
+ The rationale for the list of accepted formats is that either we have a list
+ of up to four reals, or else we have a couple of complex numbers, and in that
+ case if it formated as a proper complex number, then it should be accepted.
+ Thus potential ambiguities are lifted (for instance (a,b) is (a,b,0,0) and
+ not (a,0,b,0), i.e. it is parsed as a list of two real numbers and not two
+ complex numbers which happen to have imaginary parts equal to zero).
+ </p>
+<h5>
+<a name="math_toolkit.quat_non_mem.h9"></a>
+ <span class="phrase"><a name="math_toolkit.quat_non_mem.stream_inserter"></a></span><a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.stream_inserter">Stream
+ Inserter</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special"><<</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span>
<span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Inserts the quaternion q onto the stream <code class="computeroutput"><span class="identifier">os</span></code>
+ as if it were implemented as follows:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special"><<</span> <span class="special">(</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">os</span><span class="special">,</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostringstream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="identifier">s</span><span class="special">;</span>
+
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">flags</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">flags</span><span class="special">());</span>
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">getloc</span><span class="special">());</span>
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">precision</span><span class="special">());</span>
+
+ <span class="identifier">s</span> <span class="special"><<</span> <span class="char">'('</span> <span class="special"><<</span> <span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_2</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_3</span><span class="special">()</span> <span class="special"><<</span> <span class="char">','</span>
+ <span class="special"><<</span> <span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()</span> <span class="special"><<</span> <span class="char">')'</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="identifier">os</span> <span class="special"><<</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">str</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="quat_mem_fun.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="value_op.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/quat_overview.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/quat_overview.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,86 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Overview</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="next" href="quat_header.html" title="Header File">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../quaternions.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_header.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_quat_overview">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.quat_overview"></a><a class="link" href="quat_overview.html" title="Overview">Overview</a>
+</h2></div></div></div>
+<p>
+ Quaternions are a relative of complex numbers.
+ </p>
+<p>
+ Quaternions are in fact part of a small hierarchy of structures built upon
+ the real numbers, which comprise only the set of real numbers (traditionally
+ named <span class="emphasis"><em><span class="bold"><strong>R</strong></span></em></span>), the set of
+ complex numbers (traditionally named <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span>),
+ the set of quaternions (traditionally named <span class="emphasis"><em><span class="bold"><strong>H</strong></span></em></span>)
+ and the set of octonions (traditionally named <span class="emphasis"><em><span class="bold"><strong>O</strong></span></em></span>),
+ which possess interesting mathematical properties (chief among which is the
+ fact that they are <span class="emphasis"><em>division algebras</em></span>, <span class="emphasis"><em>i.e.</em></span>
+ where the following property is true: if <span class="emphasis"><em><code class="literal">y</code></em></span>
+ is an element of that algebra and is <span class="bold"><strong>not equal to zero</strong></span>,
+ then <span class="emphasis"><em><code class="literal">yx = yx'</code></em></span>, where <span class="emphasis"><em><code class="literal">x</code></em></span>
+ and <span class="emphasis"><em><code class="literal">x'</code></em></span> denote elements of that algebra,
+ implies that <span class="emphasis"><em><code class="literal">x = x'</code></em></span>). Each member of
+ the hierarchy is a super-set of the former.
+ </p>
+<p>
+ One of the most important aspects of quaternions is that they provide an efficient
+ way to parameterize rotations in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>
+ (the usual three-dimensional space) and <span class="emphasis"><em><span class="bold"><strong>R<sup>4</sup></strong></span></em></span>.
+ </p>
+<p>
+ In practical terms, a quaternion is simply a quadruple of real numbers (α,β,γ,δ),
+ which we can write in the form <span class="emphasis"><em><code class="literal">q = α + βi + γj + δk</code></em></span>,
+ where <span class="emphasis"><em><code class="literal">i</code></em></span> is the same object as for complex
+ numbers, and <span class="emphasis"><em><code class="literal">j</code></em></span> and <span class="emphasis"><em><code class="literal">k</code></em></span>
+ are distinct objects which play essentially the same kind of role as <span class="emphasis"><em><code class="literal">i</code></em></span>.
+ </p>
+<p>
+ An addition and a multiplication is defined on the set of quaternions, which
+ generalize their real and complex counterparts. The main novelty here is that
+ <span class="bold"><strong>the multiplication is not commutative</strong></span> (i.e.
+ there are quaternions <span class="emphasis"><em><code class="literal">x</code></em></span> and <span class="emphasis"><em><code class="literal">y</code></em></span>
+ such that <span class="emphasis"><em><code class="literal">xy ≠ yx</code></em></span>). A good mnemotechnical
+ way of remembering things is by using the formula <span class="emphasis"><em><code class="literal">i*i =
+ j*j = k*k = -1</code></em></span>.
+ </p>
+<p>
+ Quaternions (and their kin) are described in far more details in this other
+ document (with <a href="../../../quaternion/TQE_EA.pdf" target="_top">errata
+ and addenda</a>).
+ </p>
+<p>
+ Some traditional constructs, such as the exponential, carry over without too
+ much change into the realms of quaternions, but other, such as taking a square
+ root, do not.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../quaternions.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_header.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/quat_synopsis.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/quat_synopsis.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,118 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Synopsis</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="quat_header.html" title="Header File">
+<link rel="next" href="quat.html" title="Template Class quaternion">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="quat_header.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_quat_synopsis">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.quat_synopsis"></a><a class="link" href="quat_synopsis.html" title="Synopsis">Synopsis</a>
+</h2></div></div></div>
+<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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="quat.html" title="Template Class quaternion">quaternion</a><span class="special">;</span>
+<span class="keyword">template</span><span class="special"><></span> <span class="keyword">class</span> <a class="link" href="spec.html" title="Quaternion Specializations">quaternion<float></a><span class="special">;</span>
+<span class="keyword">template</span><span class="special"><></span> <span class="keyword">class</span> <a class="link" href="spec.html#math_quaternion_double">quaternion<double></a><span class="special">;</span>
+<span class="keyword">template</span><span class="special"><></span> <span class="keyword">class</span> <a class="link" href="spec.html#math_quaternion_long_double">quaternion<long double></a><span class="special">;</span>
+
+<span class="comment">// operators</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_addition_operators">operator +</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_addition_operators">operator +</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_addition_operators">operator +</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class=
"identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_addition_operators">operator +</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="speci
al">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_addition_operators">operator +</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span cla
ss="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="sp
ecial">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_subtraction_operators">operator -</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span
class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class=
"special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_multiplication_operators">operator *</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_division_operators">operator /</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_division_operators">operator /</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_division_operators">operator /</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class=
"identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_division_operators">operator /</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="speci
al">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.binary_division_operators">operator /</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.unary_plus">operator +</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.unary_minus">operator -</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.equality_operators">operator ==</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.equality_operators">operator ==</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.equality_operators">operator ==</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.equality_operators">operator ==</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.equality_operators">operator ==</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.inequality_operators">operator !=</a> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.inequality_operators">operator !=</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.inequality_operators">operator !=</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.inequality_operators">operator !=</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.inequality_operators">operator !=</a> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">>&</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.stream_extractor">operator >></a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span
class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">>&</span> <span class="keyword">operator</span> <a class="link" href="quat_non_mem.html#math_toolkit.quat_non_mem.stream_inserter">operator <<</a> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">></span> <span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <sp
an class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="comment">// values</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="value_op.html#math_toolkit.value_op.real_and_unreal">real</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="value_op.html#math_toolkit.value_op.real_and_unreal">unreal</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="value_op.html#math_toolkit.value_op.sup">sup</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="value_op.html#math_toolkit.value_op.l1">l1</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="value_op.html#math_toolkit.value_op.abs">abs</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="value_op.html#math_toolkit.value_op.norm">norm</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span><span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="value_op.html#math_toolkit.value_op.conj">conj</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="create.html#math_quaternions.creation_spherical">math_quaternions.creation_spherical</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">phi1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyw
ord">const</span> <span class="special">&</span> <span class="identifier">phi2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="create.html#math_quaternions.creation_semipolar">semipolar</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span
class="special">&</span> <span class="identifier">theta2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="create.html#math_quaternions.creation_multipolar">multipolar</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rho2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <spa
n class="special">&</span> <span class="identifier">theta2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="create.html#math_quaternions.creation_cylindrospherical">cylindrospherical</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">radius</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">longitude</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">c
onst</span> <span class="special">&</span> <span class="identifier">latitude</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="create.html#math_quaternions.creation_cylindrical">cylindrical</a><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">angle</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">h1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span cl
ass="special">&</span> <span class="identifier">h2</span><span class="special">);</span>
+
+<span class="comment">// transcendentals</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="trans.html#math_toolkit.trans.exp">exp</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="trans.html#math_toolkit.trans.cos">cos</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="trans.html#math_toolkit.trans.sin">sin</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="trans.html#math_toolkit.trans.tan">tan</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="trans.html#math_toolkit.trans.cosh">cosh</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="trans.html#math_toolkit.trans.sinh">sinh</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="trans.html#math_toolkit.trans.tanh">tanh</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <a class="link" href="trans.html#math_toolkit.trans.pow">pow</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">);</span>
+
+<span class="special">}</span> <span class="comment">// namespace math</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="quat_header.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/quat_tests.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/quat_tests.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Test Program</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="trans.html" title="Quaternion Transcendentals">
+<link rel="next" href="exp.html" title="The Quaternionic Exponential">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="trans.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="exp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_quat_tests">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.quat_tests"></a><a class="link" href="quat_tests.html" title="Test Program">Test Program</a>
+</h2></div></div></div>
+<p>
+ The quaternion_test.cpp
+ test program tests quaternions specializations for float, double and long double
+ (sample output, with message
+ output enabled).
+ </p>
+<p>
+ If you define the symbol TEST_VERBOSE, you will get additional output (verbose output); this will only
+ be helpfull if you enable message output at the same time, of course (by uncommenting
+ the relevant line in the test or by adding <code class="literal">--log_level=messages</code>
+ to your command line,...). In that case, and if you are running interactively,
+ you may in addition define the symbol BOOST_INTERACTIVE_TEST_INPUT_ITERATOR
+ to interactively test the input operator with input of your choice from the
+ standard input (instead of hard-coding it in the test).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="trans.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="exp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/quat_todo.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/quat_todo.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>To Do</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="quat_history.html" title="History">
+<link rel="next" href="../octonions.html" title="Chapter 9. Octonions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="quat_history.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../octonions.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_quat_todo">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.quat_todo"></a><a class="link" href="quat_todo.html" title="To Do">To Do</a>
+</h2></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Improve testing.
+ </li>
+<li class="listitem">
+ Rewrite input operatore using Spirit (creates a dependency).
+ </li>
+<li class="listitem">
+ Put in place an Expression Template mechanism (perhaps borrowing from uBlas).
+ </li>
+<li class="listitem">
+ Use uBlas for the link with rotations (and move from the example
+ implementation to an efficient one).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="quat_history.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../octonions.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/rationale.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/rationale.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rationale</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="demo.html" title="Demonstration Program">
+<link rel="next" href="gcd_history.html" title="History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="demo.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="gcd_history.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_rationale">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a>
+</h2></div></div></div>
+<p>
+ The greatest common divisor and least common multiple functions are greatly
+ used in some numeric contexts, including some of the other Boost libraries.
+ Centralizing these functions to one header improves code factoring and eases
+ maintainence.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="demo.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="gcd_history.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/refs.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/refs.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,205 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>References</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../backgrounders.html" title="Chapter 15. Backgrounders">
+<link rel="prev" href="remez.html" title="The Remez Method">
+<link rel="next" href="../status.html" title="Chapter 16. Library Status">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="remez.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../status.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_refs">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.refs"></a><a class="link" href="refs.html" title="References">References</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.refs.h0"></a>
+ <span class="phrase"><a name="math_toolkit.refs.general_references"></a></span><a class="link" href="refs.html#math_toolkit.refs.general_references">General
+ references</a>
+ </h5>
+<p>
+ (Specific detailed sources for individual functions and distributions are given
+ at the end of each individual section).
+ </p>
+<p>
+ <a href="http://dlmf.nist.gov/" target="_top">DLMF (NIST Digital Library of Mathematical
+ Functions)</a> is a replacement for the legendary Abramowitz and Stegun's
+ Handbook of Mathematical Functions (often called simply A&S),
+ </p>
+<p>
+ M. Abramowitz and I. A. Stegun (Eds.) (1964) Handbook of Mathematical Functions
+ with Formulas, Graphs, and Mathematical Tables, National Bureau of Standards
+ Applied Mathematics Series, U.S. Government Printing Office, Washington, D.C.
+ </p>
+<p>
+ NIST Handbook of Mathematical Functions Edited by: Frank W. J. Olver, University
+ of Maryland and National Institute of Standards and Technology, Maryland, Daniel
+ W. Lozier, National Institute of Standards and Technology, Maryland, Ronald
+ F. Boisvert, National Institute of Standards and Technology, Maryland, Charles
+ W. Clark, National Institute of Standards and Technology, Maryland and University
+ of Maryland.
+ </p>
+<p>
+ ISBN: 978-0521140638 (paperback), 9780521192255 (hardback), July 2010, Cambridge
+ University Press.
+ </p>
+<p>
+ <a href="http://www.itl.nist.gov/div898/handbook/index.htm" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods</a>
+ </p>
+<p>
+ <a href="http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/DiscreteDistributions.html" target="_top">Mathematica
+ Documentation: DiscreteDistributions</a> The Wolfram Research Documentation
+ Center is a collection of online reference materials about Mathematica, CalculationCenter,
+ and other Wolfram Research products.
+ </p>
+<p>
+ <a href="http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/ContinuousDistributions.html" target="_top">Mathematica
+ Documentation: ContinuousDistributions</a> The Wolfram Research Documentation
+ Center is a collection of online reference materials about Mathematica, CalculationCenter,
+ and other Wolfram Research products.
+ </p>
+<p>
+ Statistical Distributions (Wiley Series in Probability & Statistics) (Paperback)
+ by N.A.J. Hastings, Brian Peacock, Merran Evans, ISBN: 0471371246, Wiley 2000.
+ </p>
+<p>
+ <a href="http://www.worldscibooks.com/mathematics/p191.html" target="_top">Extreme Value
+ Distributions, Theory and Applications</a> Samuel Kotz & Saralees Nadarajah,
+ ISBN 978-1-86094-224-2 & 1-86094-224-5 Oct 2000, Chapter 1.2 discusses
+ the various extreme value distributions.
+ </p>
+<p>
+ <a href="http://bh0.physics.ubc.ca/People/matt/Doc/ThesesOthers/Phd/pugh.pdf" target="_top">pugh.pdf
+ (application/pdf Object)</a> Pugh Msc Thesis on the Lanczos approximation
+ to the gamma function.
+ </p>
+<p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003" target="_top">N1514,
+ 03-0097, A Proposal to Add Mathematical Special Functions to the C++ Standard
+ Library (version 2), Walter E. Brown</a>
+ </p>
+<h5>
+<a name="math_toolkit.refs.h1"></a>
+ <span class="phrase"><a name="math_toolkit.refs.calculators"></a></span><a class="link" href="refs.html#math_toolkit.refs.calculators">Calculators</a>
+ </h5>
+<p>
+ We found (and used to create cross-check spot values - as far as their accuracy
+ allowed).
+ </p>
+<p>
+ The Wolfram Functions Site
+ The Wolfram Functions Site - Providing the mathematical and scientific community
+ with the world's largest (and most authorititive) collection of formulas and
+ graphics about mathematical functions.
+ </p>
+<p>
+ 100-decimal digit calculator
+ provided some spot values.
+ </p>
+<p>
+ http://www.adsciengineering.com/bpdcalc/
+ Binomial Probability Distribution Calculator.
+ </p>
+<h5>
+<a name="math_toolkit.refs.h2"></a>
+ <span class="phrase"><a name="math_toolkit.refs.other_libraries"></a></span><a class="link" href="refs.html#math_toolkit.refs.other_libraries">Other
+ Libraries</a>
+ </h5>
+<p>
+ Cephes library by Shephen
+ Moshier and his book:
+ </p>
+<p>
+ Methods and programs for mathematical functions, Stephen L B Moshier, Ellis
+ Horwood (1989) ISBN 0745802893 0470216093 provided inspiration.
+ </p>
+<p>
+ <a href="http://lib.stat.cmu.edu/general/cdflib" target="_top">CDFLIB Library of Fortran
+ Routines for Cumulative Distribution functions.</a>
+ </p>
+<p>
+ <a href="http://www.csit.fsu.edu/~burkardt/cpp_src/dcdflib/dcdflib.html" target="_top">DCFLIB
+ C++ version</a>.
+ </p>
+<p>
+ <a href="http://www.csit.fsu.edu/~burkardt/f_src/dcdflib/dcdflib.html" target="_top">DCDFLIB
+ C++ version</a> DCDFLIB is a library of C++ routines, using double precision
+ arithmetic, for evaluating cumulative probability density functions.
+ </p>
+<p>
+ http://www.softintegration.com/docs/package/chnagstat/
+ </p>
+<p>
+ NAG
+ libraries.
+ </p>
+<p>
+ MathCAD
+ </p>
+<p>
+ <a href="http://www.vni.com/products/imsl/jmsl/v30/api/com/imsl/stat/Cdf.html" target="_top">JMSL
+ Numerical Library</a> (Java).
+ </p>
+<p>
+ John F Hart, Computer Approximations, (1978) ISBN 0 088275 642-7.
+ </p>
+<p>
+ William J Cody, Software Manual for the Elementary Functions, Prentice-Hall
+ (1980) ISBN 0138220646.
+ </p>
+<p>
+ Nico Temme, Special Functions, An Introduction to the Classical Functions of
+ Mathematical Physics, Wiley, ISBN: 0471-11313-1 (1996) who also gave valueable
+ advice.
+ </p>
+<p>
+ <a href="http://www.cas.lancs.ac.uk/glossary_v1.1/prob.html#probdistn" target="_top">Statistics
+ Glossary</a>, Valerie Easton and John H. McColl.
+ </p>
+<p>
+ <span class="underline">_R</span> R Development Core Team (2010). R:
+ A language and environment for statistical computing. R Foundation for Statistical
+ Computing, Vienna, Austria. ISBN 3-900051-07-0, URL http://www.R-project.org.
+ </p>
+<p>
+ For use of R, see:
+ </p>
+<p>
+ Jim Albert, Bayesian Computation with R, ISBN 978-0-387-71384-7.
+ </p>
+<p>
+ <a href="http://www.quantnet.com/cplusplus-statistical-distributions-boost" target="_top">C++
+ Statistical Distributions in Boost - QuantNetwork forum</a> discusses using
+ Boost.Math in finance.
+ </p>
+<p>
+ <a href="http://www.quantnet.com/boost-and-computational-finance/" target="_top">Quantnet
+ Boost and computational finance</a>. Robert Demming & Daniel J. Duffy,
+ Introduction to the C++ Boost Libraries - Volume I - Foundations and Volume
+ II ISBN 978-94-91028-01-4, Advanced Libraries and Applications, ISBN 978-94-91028-02-1
+ (to be published in 2011). discusses application of Boost.Math, especially
+ in finance.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="remez.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../status.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/relative_error.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/relative_error.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,113 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Relative Error</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../backgrounders.html" title="Chapter 15. Backgrounders">
+<link rel="prev" href="sf_implementation.html" title="Additional Implementation Notes">
+<link rel="next" href="lanczos.html" title="The Lanczos Approximation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sf_implementation.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="lanczos.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_relative_error">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.relative_error"></a><a class="link" href="relative_error.html" title="Relative Error">Relative Error</a>
+</h2></div></div></div>
+<p>
+ Given an actual value <span class="emphasis"><em>a</em></span> and a found value <span class="emphasis"><em>v</em></span>
+ the relative error can be calculated from:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/error2.png"></span>
+ </p>
+<p>
+ However the test programs in the library use the symmetrical form:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/error1.png"></span>
+ </p>
+<p>
+ which measures <span class="emphasis"><em>relative difference</em></span> and happens to be less
+ error prone in use since we don't have to worry which value is the "true"
+ result, and which is the experimental one. It guarantees to return a value
+ at least as large as the relative error.
+ </p>
+<p>
+ Special care needs to be taken when one value is zero: we could either take
+ the absolute error in this case (but that's cheating as the absolute error
+ is likely to be very small), or we could assign a value of either 1 or infinity
+ to the relative error in this special case. In the test cases for the special
+ functions in this library, everything below a threshold is regarded as "effectively
+ zero", otherwise the relative error is assigned the value of 1 if only
+ one of the terms is zero. The threshold is currently set at <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><>::</span><span class="identifier">min</span><span class="special">()</span></code>: in other words all denormalised numbers
+ are regarded as a zero.
+ </p>
+<p>
+ All the test programs calculate <span class="emphasis"><em>quantized relative error</em></span>,
+ whereas the graphs in this manual are produced with the <span class="emphasis"><em>actual error</em></span>.
+ The difference is as follows: in the test programs, the test data is rounded
+ to the target real type under test when the program is compiled, so the error
+ observed will then be a whole number of <span class="emphasis"><em>units in the last place</em></span>
+ either rounded up from the actual error, or rounded down (possibly to zero).
+ In contrast the <span class="emphasis"><em>true error</em></span> is obtained by extending the
+ precision of the calculated value, and then comparing to the actual value:
+ in this case the calculated error may be some fraction of <span class="emphasis"><em>units in
+ the last place</em></span>.
+ </p>
+<p>
+ Note that throughout this manual and the test programs the relative error is
+ usually quoted in units of epsilon. However, remember that <span class="emphasis"><em>units
+ in the last place</em></span> more accurately reflect the number of contaminated
+ digits, and that relative error can <span class="emphasis"><em>"wobble"</em></span>
+ by a factor of 2 compared to <span class="emphasis"><em>units in the last place</em></span>.
+ In other words: two implementations of the same function, whose maximum relative
+ errors differ by a factor of 2, can actually be accurate to the same number
+ of binary digits. You have been warned!
+ </p>
+<h5>
+<a name="math_toolkit.relative_error.h0"></a>
+ <span class="phrase"><a name="math_toolkit.relative_error.zero_error"></a></span><a class="link" href="relative_error.html#math_toolkit.relative_error.zero_error">The
+ Impossibility of Zero Error</a>
+ </h5>
+<p>
+ For many of the functions in this library, it is assumed that the error is
+ "effectively zero" if the computation can be done with a number of
+ guard digits. However it should be remembered that if the result is a <span class="emphasis"><em>transcendental
+ number</em></span> then as a point of principle we can never be sure that the
+ result is accurate to more than 1 ulp. This is an example of what http://en.wikipedia.org/wiki/William_Kahan
+ called http://en.wikipedia.org/wiki/Rounding#The_table-maker.27s_dilemma:
+ consider what happens if the first guard digit is a one, and the remaining
+ guard digits are all zero. Do we have a tie or not? Since the only thing we
+ can tell about a transcendental number is that its digits have no particular
+ pattern, we can never tell if we have a tie, no matter how many guard digits
+ we have. Therefore, we can never be completely sure that the result has been
+ rounded in the right direction. Of course, transcendental numbers that just
+ happen to be a tie - for however many guard digits we have - are extremely
+ rare, and get rarer the more guard digits we have, but even so....
+ </p>
+<p>
+ Refer to the classic text <a href="http://docs.sun.com/source/806-3568/ncg_goldberg.html" target="_top">What
+ Every Computer Scientist Should Know About Floating-Point Arithmetic</a>
+ for more information.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sf_implementation.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="lanczos.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/remez.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/remez.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,528 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>The Remez Method</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../backgrounders.html" title="Chapter 15. Backgrounders">
+<link rel="prev" href="lanczos.html" title="The Lanczos Approximation">
+<link rel="next" href="refs.html" title="References">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="lanczos.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="refs.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_remez">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.remez"></a><a class="link" href="remez.html" title="The Remez Method">The Remez Method</a>
+</h2></div></div></div>
+<p>
+ The Remez algorithm
+ is a methodology for locating the minimax rational approximation to a function.
+ This short article gives a brief overview of the method, but it should not
+ be regarded as a thorough theoretical treatment, for that you should consult
+ your favorite textbook.
+ </p>
+<p>
+ Imagine that you want to approximate some function f(x) by way of a rational
+ function R(x), where R(x) may be either a polynomial P(x) or a ratio of two
+ polynomials P(x)/Q(x) (a rational function). Initially we'll concentrate on
+ the polynomial case, as it's by far the easier to deal with, later we'll extend
+ to the full rational function case.
+ </p>
+<p>
+ We want to find the "best" rational approximation, where "best"
+ is defined to be the approximation that has the least deviation from f(x).
+ We can measure the deviation by way of an error function:
+ </p>
+<p>
+ E<sub>abs</sub>(x) = f(x) - R(x)
+ </p>
+<p>
+ which is expressed in terms of absolute error, but we can equally use relative
+ error:
+ </p>
+<p>
+ E<sub>rel</sub>(x) = (f(x) - R(x)) / |f(x)|
+ </p>
+<p>
+ And indeed in general we can scale the error function in any way we want, it
+ makes no difference to the maths, although the two forms above cover almost
+ every practical case that you're likely to encounter.
+ </p>
+<p>
+ The minimax rational function R(x) is then defined to be the function that
+ yields the smallest maximal value of the error function. Chebyshev showed that
+ there is a unique minimax solution for R(x) that has the following properties:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If R(x) is a polynomial of degree N, then there are N+2 unknowns: the N+1
+ coefficients of the polynomial, and maximal value of the error function.
+ </li>
+<li class="listitem">
+ The error function has N+1 roots, and N+2 extrema (minima and maxima).
+ </li>
+<li class="listitem">
+ The extrema alternate in sign, and all have the same magnitude.
+ </li>
+</ul></div>
+<p>
+ That means that if we know the location of the extrema of the error function
+ then we can write N+2 simultaneous equations:
+ </p>
+<p>
+ R(x<sub>i</sub>) + (-1)<sup>i</sup>E = f(x<sub>i</sub>)
+ </p>
+<p>
+ where E is the maximal error term, and x<sub>i</sub> are the abscissa values of the N+2
+ extrema of the error function. It is then trivial to solve the simultaneous
+ equations to obtain the polynomial coefficients and the error term.
+ </p>
+<p>
+ <span class="emphasis"><em>Unfortunately we don't know where the extrema of the error function
+ are located!</em></span>
+ </p>
+<h5>
+<a name="math_toolkit.remez.h0"></a>
+ <span class="phrase"><a name="math_toolkit.remez.the_remez_method"></a></span><a class="link" href="remez.html#math_toolkit.remez.the_remez_method">The
+ Remez Method</a>
+ </h5>
+<p>
+ The Remez method is an iterative technique which, given a broad range of assumptions,
+ will converge on the extrema of the error function, and therefore the minimax
+ solution.
+ </p>
+<p>
+ In the following discussion we'll use a concrete example to illustrate the
+ Remez method: an approximation to the function e<sup>x</sup>   over the range [-1, 1].
+ </p>
+<p>
+ Before we can begin the Remez method, we must obtain an initial value for the
+ location of the extrema of the error function. We could "guess" these,
+ but a much closer first approximation can be obtained by first constructing
+ an interpolated polynomial approximation to f(x).
+ </p>
+<p>
+ In order to obtain the N+1 coefficients of the interpolated polynomial we need
+ N+1 points (x<sub>0</sub>...x<sub>N</sub>): with our interpolated form passing through each of those
+ points that yields N+1 simultaneous equations:
+ </p>
+<p>
+ f(x<sub>i</sub>) = P(x<sub>i</sub>) = c<sub>0</sub> + c<sub>1</sub>x<sub>i</sub> ... + c<sub>N</sub>x<sub>i</sub><sup>N</sup>
+ </p>
+<p>
+ Which can be solved for the coefficients c<sub>0</sub>...c<sub>N</sub> in P(x).
+ </p>
+<p>
+ Obviously this is not a minimax solution, indeed our only guarantee is that
+ f(x) and P(x) touch at N+1 locations, away from those points the error may
+ be arbitrarily large. However, we would clearly like this initial approximation
+ to be as close to f(x) as possible, and it turns out that using the zeros of
+ an orthogonal polynomial as the initial interpolation points is a good choice.
+ In our example we'll use the zeros of a Chebyshev polynomial as these are particularly
+ easy to calculate, interpolating for a polynomial of degree 4, and measuring
+ <span class="emphasis"><em>relative error</em></span> we get the following error function:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../graphs/remez-2.png"></span>
+ </p>
+<p>
+ Which has a peak relative error of 1.2x10<sup>-3</sup>.
+ </p>
+<p>
+ While this is a pretty good approximation already, judging by the shape of
+ the error function we can clearly do better. Before starting on the Remez method
+ propper, we have one more step to perform: locate all the extrema of the error
+ function, and store these locations as our initial <span class="emphasis"><em>Chebyshev control
+ points</em></span>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ In the simple case of a polynomial approximation, by interpolating through
+ the roots of a Chebyshev polynomial we have in fact created a <span class="emphasis"><em>Chebyshev
+ approximation</em></span> to the function: in terms of <span class="emphasis"><em>absolute
+ error</em></span> this is the best a priori choice for the interpolated form
+ we can achieve, and typically is very close to the minimax solution.
+ </p>
+<p>
+ However, if we want to optimise for <span class="emphasis"><em>relative error</em></span>,
+ or if the approximation is a rational function, then the initial Chebyshev
+ solution can be quite far from the ideal minimax solution.
+ </p>
+<p>
+ A more technical discussion of the theory involved can be found in this
+ <a href="http://math.fullerton.edu/mathews/n2003/ChebyshevPolyMod.html" target="_top">online
+ course</a>.
+ </p>
+</td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.remez.h1"></a>
+ <span class="phrase"><a name="math_toolkit.remez.remez_step_1"></a></span><a class="link" href="remez.html#math_toolkit.remez.remez_step_1">Remez
+ Step 1</a>
+ </h5>
+<p>
+ The first step in the Remez method, given our current set of N+2 Chebyshev
+ control points x<sub>i</sub>, is to solve the N+2 simultaneous equations:
+ </p>
+<p>
+ P(x<sub>i</sub>) + (-1)<sup>i</sup>E = f(x<sub>i</sub>)
+ </p>
+<p>
+ To obtain the error term E, and the coefficients of the polynomial P(x).
+ </p>
+<p>
+ This gives us a new approximation to f(x) that has the same error <span class="emphasis"><em>E</em></span>
+ at each of the control points, and whose error function <span class="emphasis"><em>alternates
+ in sign</em></span> at the control points. This is still not necessarily the
+ minimax solution though: since the control points may not be at the extrema
+ of the error function. After this first step here's what our approximation's
+ error function looks like:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../graphs/remez-3.png"></span>
+ </p>
+<p>
+ Clearly this is still not the minimax solution since the control points are
+ not located at the extrema, but the maximum relative error has now dropped
+ to 5.6x10<sup>-4</sup>.
+ </p>
+<h5>
+<a name="math_toolkit.remez.h2"></a>
+ <span class="phrase"><a name="math_toolkit.remez.remez_step_2"></a></span><a class="link" href="remez.html#math_toolkit.remez.remez_step_2">Remez
+ Step 2</a>
+ </h5>
+<p>
+ The second step is to locate the extrema of the new approximation, which we
+ do in two stages: first, since the error function changes sign at each control
+ point, we must have N+1 roots of the error function located between each pair
+ of N+2 control points. Once these roots are found by standard root finding
+ techniques, we know that N extrema are bracketed between each pair of roots,
+ plus two more between the endpoints of the range and the first and last roots.
+ The N+2 extrema can then be found using standard function minimisation techniques.
+ </p>
+<p>
+ We now have a choice: multi-point exchange, or single point exchange.
+ </p>
+<p>
+ In single point exchange, we move the control point nearest to the largest
+ extrema to the absissa value of the extrema.
+ </p>
+<p>
+ In multi-point exchange we swap all the current control points, for the locations
+ of the extrema.
+ </p>
+<p>
+ In our example we perform multi-point exchange.
+ </p>
+<h5>
+<a name="math_toolkit.remez.h3"></a>
+ <span class="phrase"><a name="math_toolkit.remez.iteration"></a></span><a class="link" href="remez.html#math_toolkit.remez.iteration">Iteration</a>
+ </h5>
+<p>
+ The Remez method then performs steps 1 and 2 above iteratively until the control
+ points are located at the extrema of the error function: this is then the minimax
+ solution.
+ </p>
+<p>
+ For our current example, two more iterations converges on a minimax solution
+ with a peak relative error of 5x10<sup>-4</sup> and an error function that looks like:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../graphs/remez-4.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.remez.h4"></a>
+ <span class="phrase"><a name="math_toolkit.remez.rational_approximations"></a></span><a class="link" href="remez.html#math_toolkit.remez.rational_approximations">Rational
+ Approximations</a>
+ </h5>
+<p>
+ If we wish to extend the Remez method to a rational approximation of the form
+ </p>
+<p>
+ f(x) = R(x) = P(x) / Q(x)
+ </p>
+<p>
+ where P(x) and Q(x) are polynomials, then we proceed as before, except that
+ now we have N+M+2 unknowns if P(x) is of order N and Q(x) is of order M. This
+ assumes that Q(x) is normalised so that its leading coefficient is 1, giving
+ N+M+1 polynomial coefficients in total, plus the error term E.
+ </p>
+<p>
+ The simultaneous equations to be solved are now:
+ </p>
+<p>
+ P(x<sub>i</sub>) / Q(x<sub>i</sub>) + (-1)<sup>i</sup>E = f(x<sub>i</sub>)
+ </p>
+<p>
+ Evaluated at the N+M+2 control points x<sub>i</sub>.
+ </p>
+<p>
+ Unfortunately these equations are non-linear in the error term E: we can only
+ solve them if we know E, and yet E is one of the unknowns!
+ </p>
+<p>
+ The method usually adopted to solve these equations is an iterative one: we
+ guess the value of E, solve the equations to obtain a new value for E (as well
+ as the polynomial coefficients), then use the new value of E as the next guess.
+ The method is repeated until E converges on a stable value.
+ </p>
+<p>
+ These complications extend the running time required for the development of
+ rational approximations quite considerably. It is often desirable to obtain
+ a rational rather than polynomial approximation none the less: rational approximations
+ will often match more difficult to approximate functions, to greater accuracy,
+ and with greater efficiency, than their polynomial alternatives. For example,
+ if we takes our previous example of an approximation to e<sup>x</sup>, we obtained 5x10<sup>-4</sup> accuracy
+ with an order 4 polynomial. If we move two of the unknowns into the denominator
+ to give a pair of order 2 polynomials, and re-minimise, then the peak relative
+ error drops to 8.7x10<sup>-5</sup>. That's a 5 fold increase in accuracy, for the same
+ number of terms overall.
+ </p>
+<h5>
+<a name="math_toolkit.remez.h5"></a>
+ <span class="phrase"><a name="math_toolkit.remez.practical_considerations"></a></span><a class="link" href="remez.html#math_toolkit.remez.practical_considerations">Practical
+ Considerations</a>
+ </h5>
+<p>
+ Most treatises on approximation theory stop at this point. However, from a
+ practical point of view, most of the work involves finding the right approximating
+ form, and then persuading the Remez method to converge on a solution.
+ </p>
+<p>
+ So far we have used a direct approximation:
+ </p>
+<p>
+ f(x) = R(x)
+ </p>
+<p>
+ But this will converge to a useful approximation only if f(x) is smooth. In
+ addition round-off errors when evaluating the rational form mean that this
+ will never get closer than within a few epsilon of machine precision. Therefore
+ this form of direct approximation is often reserved for situations where we
+ want efficiency, rather than accuracy.
+ </p>
+<p>
+ The first step in improving the situation is generally to split f(x) into a
+ dominant part that we can compute accurately by another method, and a slowly
+ changing remainder which can be approximated by a rational approximation. We
+ might be tempted to write:
+ </p>
+<p>
+ f(x) = g(x) + R(x)
+ </p>
+<p>
+ where g(x) is the dominant part of f(x), but if f(x)/g(x) is approximately
+ constant over the interval of interest then:
+ </p>
+<p>
+ f(x) = g(x)(c + R(x))
+ </p>
+<p>
+ Will yield a much better solution: here <span class="emphasis"><em>c</em></span> is a constant
+ that is the approximate value of f(x)/g(x) and R(x) is typically tiny compared
+ to <span class="emphasis"><em>c</em></span>. In this situation if R(x) is optimised for absolute
+ error, then as long as its error is small compared to the constant <span class="emphasis"><em>c</em></span>,
+ that error will effectively get wiped out when R(x) is added to <span class="emphasis"><em>c</em></span>.
+ </p>
+<p>
+ The difficult part is obviously finding the right g(x) to extract from your
+ function: often the asymptotic behaviour of the function will give a clue,
+ so for example the function <a class="link" href="sf_erf/error_function.html" title="Error Functions">erfc</a>
+ becomes proportional to e<sup>-x<sup>2</sup></sup>/x as x becomes large. Therefore using:
+ </p>
+<p>
+ erfc(z) = (C + R(x)) e<sup>-x<sup>2</sup></sup>/x
+ </p>
+<p>
+ as the approximating form seems like an obvious thing to try, and does indeed
+ yield a useful approximation.
+ </p>
+<p>
+ However, the difficulty then becomes one of converging the minimax solution.
+ Unfortunately, it is known that for some functions the Remez method can lead
+ to divergent behaviour, even when the initial starting approximation is quite
+ good. Furthermore, it is not uncommon for the solution obtained in the first
+ Remez step above to be a bad one: the equations to be solved are generally
+ "stiff", often very close to being singular, and assuming a solution
+ is found at all, round-off errors and a rapidly changing error function, can
+ lead to a situation where the error function does not in fact change sign at
+ each control point as required. If this occurs, it is fatal to the Remez method.
+ It is also possible to obtain solutions that are perfectly valid mathematically,
+ but which are quite useless computationally: either because there is an unavoidable
+ amount of roundoff error in the computation of the rational function, or because
+ the denominator has one or more roots over the interval of the approximation.
+ In the latter case while the approximation may have the correct limiting value
+ at the roots, the approximation is nonetheless useless.
+ </p>
+<p>
+ Assuming that the approximation does not have any fatal errors, and that the
+ only issue is converging adequately on the minimax solution, the aim is to
+ get as close as possible to the minimax solution before beginning the Remez
+ method. Using the zeros of a Chebyshev polynomial for the initial interpolation
+ is a good start, but may not be ideal when dealing with relative errors and/or
+ rational (rather than polynomial) approximations. One approach is to skew the
+ initial interpolation points to one end: for example if we raise the roots
+ of the Chebyshev polynomial to a positive power greater than 1 then the roots
+ will be skewed towards the middle of the [-1,1] interval, while a positive
+ power less than one will skew them towards either end. More usefully, if we
+ initially rescale the points over [0,1] and then raise to a positive power,
+ we can skew them to the left or right. Returning to our example of e<sup>x</sup>   over [-1,1],
+ the initial interpolated form was some way from the minimax solution:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../graphs/remez-2.png"></span>
+ </p>
+<p>
+ However, if we first skew the interpolation points to the left (rescale them
+ to [0, 1], raise to the power 1.3, and then rescale back to [-1,1]) we reduce
+ the error from 1.3x10<sup>-3</sup>  to 6x10<sup>-4</sup>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../graphs/remez-5.png"></span>
+ </p>
+<p>
+ It's clearly still not ideal, but it is only a few percent away from our desired
+ minimax solution (5x10<sup>-4</sup>).
+ </p>
+<h5>
+<a name="math_toolkit.remez.h6"></a>
+ <span class="phrase"><a name="math_toolkit.remez.remez_method_checklist"></a></span><a class="link" href="remez.html#math_toolkit.remez.remez_method_checklist">Remez
+ Method Checklist</a>
+ </h5>
+<p>
+ The following lists some of the things to check if the Remez method goes wrong,
+ it is by no means an exhaustive list, but is provided in the hopes that it
+ will prove useful.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Is the function smooth enough? Can it be better separated into a rapidly
+ changing part, and an asymptotic part?
+ </li>
+<li class="listitem">
+ Does the function being approximated have any "blips" in it?
+ Check for problems as the function changes computation method, or if a
+ root, or an infinity has been divided out. The telltale sign is if there
+ is a narrow region where the Remez method will not converge.
+ </li>
+<li class="listitem">
+ Check you have enough accuracy in your calculations: remember that the
+ Remez method works on the difference between the approximation and the
+ function being approximated: so you must have more digits of precision
+ available than the precision of the approximation being constructed. So
+ for example at double precision, you shouldn't expect to be able to get
+ better than a float precision approximation.
+ </li>
+<li class="listitem">
+ Try skewing the initial interpolated approximation to minimise the error
+ before you begin the Remez steps.
+ </li>
+<li class="listitem">
+ If the approximation won't converge or is ill-conditioned from one starting
+ location, try starting from a different location.
+ </li>
+<li class="listitem">
+ If a rational function won't converge, one can minimise a polynomial (which
+ presents no problems), then rotate one term from the numerator to the denominator
+ and minimise again. In theory one can continue moving terms one at a time
+ from numerator to denominator, and then re-minimising, retaining the last
+ set of control points at each stage.
+ </li>
+<li class="listitem">
+ Try using a smaller interval. It may also be possible to optimise over
+ one (small) interval, rescale the control points over a larger interval,
+ and then re-minimise.
+ </li>
+<li class="listitem">
+ Keep absissa values small: use a change of variable to keep the abscissa
+ over, say [0, b], for some smallish value <span class="emphasis"><em>b</em></span>.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.remez.h7"></a>
+ <span class="phrase"><a name="math_toolkit.remez.references"></a></span><a class="link" href="remez.html#math_toolkit.remez.references">References</a>
+ </h5>
+<p>
+ The original references for the Remez Method and it's extension to rational
+ functions are unfortunately in Russian:
+ </p>
+<p>
+ Remez, E.Ya., <span class="emphasis"><em>Fundamentals of numerical methods for Chebyshev approximations</em></span>,
+ "Naukova Dumka", Kiev, 1969.
+ </p>
+<p>
+ Remez, E.Ya., Gavrilyuk, V.T., <span class="emphasis"><em>Computer development of certain approaches
+ to the approximate construction of solutions of Chebyshev problems nonlinearly
+ depending on parameters</em></span>, Ukr. Mat. Zh. 12 (1960), 324-338.
+ </p>
+<p>
+ Gavrilyuk, V.T., <span class="emphasis"><em>Generalization of the first polynomial algorithm
+ of E.Ya.Remez for the problem of constructing rational-fractional Chebyshev
+ approximations</em></span>, Ukr. Mat. Zh. 16 (1961), 575-585.
+ </p>
+<p>
+ Some English language sources include:
+ </p>
+<p>
+ Fraser, W., Hart, J.F., <span class="emphasis"><em>On the computation of rational approximations
+ to continuous functions</em></span>, Comm. of the ACM 5 (1962), 401-403, 414.
+ </p>
+<p>
+ Ralston, A., <span class="emphasis"><em>Rational Chebyshev approximation by Remes' algorithms</em></span>,
+ Numer.Math. 7 (1965), no. 4, 322-330.
+ </p>
+<p>
+ A. Ralston, <span class="emphasis"><em>Rational Chebyshev approximation, Mathematical Methods
+ for Digital Computers v. 2</em></span> (Ralston A., Wilf H., eds.), Wiley, New
+ York, 1967, pp. 264-284.
+ </p>
+<p>
+ Hart, J.F. e.a., <span class="emphasis"><em>Computer approximations</em></span>, Wiley, New York
+ a.o., 1968.
+ </p>
+<p>
+ Cody, W.J., Fraser, W., Hart, J.F., <span class="emphasis"><em>Rational Chebyshev approximation
+ using linear equations</em></span>, Numer.Math. 12 (1968), 242-251.
+ </p>
+<p>
+ Cody, W.J., <span class="emphasis"><em>A survey of practical rational and polynomial approximation
+ of functions</em></span>, SIAM Review 12 (1970), no. 3, 400-423.
+ </p>
+<p>
+ Barrar, R.B., Loeb, H.J., <span class="emphasis"><em>On the Remez algorithm for non-linear families</em></span>,
+ Numer.Math. 15 (1970), 382-391.
+ </p>
+<p>
+ Dunham, Ch.B., <span class="emphasis"><em>Convergence of the Fraser-Hart algorithm for rational
+ Chebyshev approximation</em></span>, Math. Comp. 29 (1975), no. 132, 1078-1082.
+ </p>
+<p>
+ G. L. Litvinov, <span class="emphasis"><em>Approximate construction of rational approximations
+ and the effect of error autocorrection</em></span>, Russian Journal of Mathematical
+ Physics, vol.1, No. 3, 1994.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="lanczos.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="refs.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/result_type.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/result_type.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,143 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Calculation of the Type of the Result</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="namespaces.html" title="Namespaces">
+<link rel="next" href="error_handling.html" title="Error Handling">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="namespaces.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="error_handling.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_result_type">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.result_type"></a><a class="link" href="result_type.html" title="Calculation of the Type of the Result">Calculation of the Type of the
+ Result</a>
+</h2></div></div></div>
+<p>
+ The functions in this library are all overloaded to accept mixed floating point
+ (or mixed integer and floating point type) arguments. So for example:
+ </p>
+<pre class="programlisting"><span class="identifier">foo</span><span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="number">2.0</span><span class="special">);</span>
+<span class="identifier">foo</span><span class="special">(</span><span class="number">1.0f</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span>
+<span class="identifier">foo</span><span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="number">2L</span><span class="special">);</span>
+</pre>
+<p>
+ etc, are all valid calls, as long as "foo" is a function taking two
+ floating-point arguments. But that leaves the question:
+ </p>
+<div class="sidebar">
+<div class="titlepage"></div>
+<p>
+ <span class="emphasis"><em>"Given a special function with N arguments of types T1, T2,
+ T3 ... TN, then what type is the result?"</em></span>
+ </p>
+</div>
+<p>
+ <span class="bold"><strong>If all the arguments are of the same (floating point)
+ type then the result is the same type as the arguments.</strong></span>
+ </p>
+<p>
+ Otherwise, the type of the result is computed using the following logic:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Any arguments that are not template arguments are disregarded from further
+ analysis.
+ </li>
+<li class="listitem">
+ For each type in the argument list, if that type is an integer type then
+ it is treated as if it were of type double for the purposes of further
+ analysis.
+ </li>
+<li class="listitem">
+ If any of the arguments is a user-defined class type, then the result type
+ is the first such class type that is constructible from all of the other
+ argument types.
+ </li>
+<li class="listitem">
+ If any of the arguments is of type <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>, then the result is of type
+ <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+ </li>
+<li class="listitem">
+ If any of the arguments is of type <code class="computeroutput"><span class="keyword">double</span></code>,
+ then the result is of type <code class="computeroutput"><span class="keyword">double</span></code>.
+ </li>
+<li class="listitem">
+ Otherwise the result is of type <code class="computeroutput"><span class="keyword">float</span></code>.
+ </li>
+</ol></div>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">cyl_bessel</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">3.0</span><span class="special">);</span>
+</pre>
+<p>
+ Returns a <code class="computeroutput"><span class="keyword">double</span></code> result, as does:
+ </p>
+<pre class="programlisting"><span class="identifier">cyl_bessel</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">3.0f</span><span class="special">);</span>
+</pre>
+<p>
+ as in this case the integer first argument is treated as a <code class="computeroutput"><span class="keyword">double</span></code>
+ and takes precedence over the <code class="computeroutput"><span class="keyword">float</span></code>
+ second argument. To get a <code class="computeroutput"><span class="keyword">float</span></code>
+ result we would need all the arguments to be of type float:
+ </p>
+<pre class="programlisting"><span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="number">2.0f</span><span class="special">,</span> <span class="number">3.0f</span><span class="special">);</span>
+</pre>
+<p>
+ When one or more of the arguments is not a template argument then it doesn't
+ effect the return type at all, for example:
+ </p>
+<pre class="programlisting"><span class="identifier">sph_bessel</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">3.0f</span><span class="special">);</span>
+</pre>
+<p>
+ returns a <code class="computeroutput"><span class="keyword">float</span></code>, since the first
+ argument is not a template argument and so doesn't effect the result: without
+ this rule functions that take explicitly integer arguments could never return
+ <code class="computeroutput"><span class="keyword">float</span></code>.
+ </p>
+<p>
+ And for user-defined types, all of the following return an <code class="computeroutput"><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span></code> result:
+ </p>
+<pre class="programlisting"><span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">(</span><span class="number">2</span><span class="special">));</span>
+
+<span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">(</span><span class="number">2</span><span class="special">),</span> <span class="number">3</span><span class="special">);</span>
+
+<span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">quad_float</span><span class="special">(</span><span class="number">2</span><span class="special">),</span> <span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">(</span><span class="number">3</span><span class="special">));</span>
+</pre>
+<p>
+ In the last case, <code class="computeroutput"><span class="identifier">quad_float</span></code>
+ is convertible to <code class="computeroutput"><span class="identifier">RR</span></code>, but not
+ vice-versa, so the result will be an <code class="computeroutput"><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span></code>. Note
+ that this assumes that you are using a <a class="link" href="high_precision/use_ntl.html" title="Using NTL Library">patched
+ NTL library</a>.
+ </p>
+<p>
+ These rules are chosen to be compatible with the behaviour of <span class="emphasis"><em>ISO/IEC
+ 9899:1999 Programming languages - C</em></span> and with the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Draft
+ Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph
+ 5</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="namespaces.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="error_handling.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/rounding.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/rounding.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rounding Truncation and Integer Conversion</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../utils.html" title="Chapter 4. Floating Point Utilities">
+<link rel="prev" href="../utils.html" title="Chapter 4. Floating Point Utilities">
+<link rel="next" href="rounding/round.html" title="Rounding Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../utils.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="rounding/round.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_rounding">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.rounding"></a><a class="link" href="rounding.html" title="Rounding Truncation and Integer Conversion">Rounding Truncation and Integer
+ Conversion</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Rounding Functions</span></dt>
+<dt><span class="section">Truncation Functions</span></dt>
+<dt><span class="section"><a href="rounding/modf.html">Integer and Fractional Part
+ Splitting (modf)</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../utils.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="rounding/round.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/rounding/modf.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/rounding/modf.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,73 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Integer and Fractional Part Splitting (modf)</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../rounding.html" title="Rounding Truncation and Integer Conversion">
+<link rel="prev" href="trunc.html" title="Truncation Functions">
+<link rel="next" href="../fpclass.html" title="Floating-Point Classification: Infinities and NaNs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="trunc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../rounding.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../fpclass.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_rounding_modf">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.rounding.modf"></a><a class="link" href="modf.html" title="Integer and Fractional Part Splitting (modf)">Integer and Fractional Part
+ Splitting (modf)</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">modf</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">modf</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">ipart</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">modf</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">ipart</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">modf</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">int</span><span class="special">*</span> <span class="identifier">ipart</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">modf</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">int</span><span class="special">*</span> <span class="identifier">ipart</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">modf</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">long</span><span class="special">*</span> <span class="identifier">ipart</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">modf</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">long</span><span class="special">*</span> <span class="identifier">ipart</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">modf</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">long</span><span class="special">*</span> <span class="identifier">ipart</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">modf</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">long</span><span class="special">*</span> <span class="identifier">ipart</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">modf</span></code> functions store
+ the integer part of <span class="emphasis"><em>v</em></span> in <code class="computeroutput"><span class="special">*</span><span class="identifier">ipart</span></code> and return the fractional part of
+ <span class="emphasis"><em>v</em></span>. The sign of the integer and fractional parts are
+ the same as the sign of <span class="emphasis"><em>v</em></span>.
+ </p>
+<p>
+ If the argument <span class="emphasis"><em>v</em></span> is either non-finite or else outside
+ the range of the result type, then returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.rounding_error">rounding_error</a>:
+ by default this throws an instance of boost::math::rounding_error.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="trunc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../rounding.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../fpclass.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/rounding/round.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/rounding/round.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,73 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rounding Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../rounding.html" title="Rounding Truncation and Integer Conversion">
+<link rel="prev" href="../rounding.html" title="Rounding Truncation and Integer Conversion">
+<link rel="next" href="trunc.html" title="Truncation Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../rounding.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../rounding.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="trunc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_rounding_round">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.rounding.round"></a><a class="link" href="round.html" title="Rounding Functions">Rounding Functions</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">round</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">round</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">round</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">iround</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">iround</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">long</span> <span class="identifier">lround</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="keyword">long</span> <span class="identifier">lround</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llround</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llround</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+</pre>
+<p>
+ These functions return the closest integer to the argument <span class="emphasis"><em>v</em></span>.
+ </p>
+<p>
+ Halfway cases are rounded away from zero, regardless of the current rounding
+ direction.
+ </p>
+<p>
+ If the argument <span class="emphasis"><em>v</em></span> is either non-finite or else outside
+ the range of the result type, then returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.rounding_error">rounding_error</a>:
+ by default this throws an instance of boost::math::rounding_error.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../rounding.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../rounding.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="trunc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/rounding/trunc.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/rounding/trunc.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Truncation Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../rounding.html" title="Rounding Truncation and Integer Conversion">
+<link rel="prev" href="round.html" title="Rounding Functions">
+<link rel="next" href="modf.html" title="Integer and Fractional Part Splitting (modf)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="round.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../rounding.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="modf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_rounding_trunc">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.rounding.trunc"></a><a class="link" href="trunc.html" title="Truncation Functions">Truncation Functions</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">trunc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">trunc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">trunc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">itrunc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">itrunc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">long</span> <span class="identifier">ltrunc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="keyword">long</span> <span class="identifier">ltrunc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">lltrunc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">lltrunc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&);</span>
+</pre>
+<p>
+ The trunc functions round their argument to the integer value, nearest to
+ but no larger in magnitude than the argument.
+ </p>
+<p>
+ For example <code class="computeroutput"><span class="identifier">itrunc</span><span class="special">(</span><span class="number">3.7</span><span class="special">)</span></code> would
+ return <code class="computeroutput"><span class="number">3</span></code> and <code class="computeroutput"><span class="identifier">ltrunc</span><span class="special">(-</span><span class="number">4.6</span><span class="special">)</span></code>
+ would return <code class="computeroutput"><span class="special">-</span><span class="number">4</span></code>.
+ </p>
+<p>
+ If the argument <span class="emphasis"><em>v</em></span> is either non-finite or else outside
+ the range of the result type, then returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.rounding_error">rounding_error</a>:
+ by default this throws an instance of boost::math::rounding_error.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="round.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../rounding.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="modf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/run_time.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/run_time.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Run-time GCD & LCM Determination</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="lcm_function_object.html" title="LCM Function Object">
+<link rel="next" href="compile_time.html" title="Compile time GCD and LCM determination">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="lcm_function_object.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="compile_time.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_run_time">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.run_time"></a><a class="link" href="run_time.html" title="Run-time GCD & LCM Determination">Run-time GCD & LCM Determination</a>
+</h2></div></div></div>
+<p>
+ <span class="bold"><strong>Header: </strong></span> <boost/math/common_factor_rt.hpp>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">IntegerType</span> <span class="special">></span>
+<span class="identifier">IntegerType</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gcd</span><span class="special">(</span> <span class="identifier">IntegerType</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">IntegerType</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">b</span> <span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">IntegerType</span> <span class="special">></span>
+<span class="identifier">IntegerType</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lcm</span><span class="special">(</span> <span class="identifier">IntegerType</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">IntegerType</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">b</span> <span class="special">);</span>
+</pre>
+<p>
+ The boost::math::gcd function template returns the greatest common (nonnegative)
+ divisor of the two integers passed to it. The boost::math::lcm function template
+ returns the least common (nonnegative) multiple of the two integers passed
+ to it. The function templates are parameterized on the function arguments'
+ IntegerType, which is also the return type. Internally, these function templates
+ use an object of the corresponding version of the gcd_evaluator and lcm_evaluator
+ class templates, respectively.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="lcm_function_object.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="compile_time.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_beta.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_beta.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Beta Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="factorials/sf_binomial.html" title="Binomial Coefficients">
+<link rel="next" href="sf_beta/beta_function.html" title="Beta">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="factorials/sf_binomial.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sf_beta/beta_function.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_beta">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.sf_beta"></a><a class="link" href="sf_beta.html" title="Beta Functions">Beta Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Beta</span></dt>
+<dt><span class="section"><a href="sf_beta/ibeta_function.html">Incomplete Beta
+ Functions</a></span></dt>
+<dt><span class="section"><a href="sf_beta/ibeta_inv_function.html">The Incomplete
+ Beta Function Inverses</a></span></dt>
+<dt><span class="section"><a href="sf_beta/beta_derivative.html">Derivative of the
+ Incomplete Beta Function</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="factorials/sf_binomial.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sf_beta/beta_function.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/beta_derivative.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/beta_derivative.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,92 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Derivative of the Incomplete Beta Function</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_beta.html" title="Beta Functions">
+<link rel="prev" href="ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">
+<link rel="next" href="../sf_erf.html" title="Error Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ibeta_inv_function.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_beta.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../sf_erf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_beta_beta_derivative">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_beta.beta_derivative"></a><a class="link" href="beta_derivative.html" title="Derivative of the Incomplete Beta Function">Derivative of the
+ Incomplete Beta Function</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_beta.beta_derivative.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.beta_derivative.synopsis"></a></span><a class="link" href="beta_derivative.html#math_toolkit.sf_beta.beta_derivative.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">beta</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_derivative</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_derivative</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_beta.beta_derivative.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.beta_derivative.description"></a></span><a class="link" href="beta_derivative.html#math_toolkit.sf_beta.beta_derivative.description">Description</a>
+ </h5>
+<p>
+ This function finds some uses in statistical distributions: it computes the
+ partial derivative with respect to <span class="emphasis"><em>x</em></span> of the incomplete
+ beta function <a class="link" href="ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/derivative2.png"></span>
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a> when T1, T2 and T3 are different
+ types.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.beta_derivative.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.beta_derivative.accuracy"></a></span><a class="link" href="beta_derivative.html#math_toolkit.sf_beta.beta_derivative.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Almost identical to the incomplete beta function <a class="link" href="ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.beta_derivative.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.beta_derivative.implementation"></a></span><a class="link" href="beta_derivative.html#math_toolkit.sf_beta.beta_derivative.implementation">Implementation</a>
+ </h5>
+<p>
+ This function just expose some of the internals of the incomplete beta function
+ <a class="link" href="ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>: refer to
+ the documentation for that function for more information.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="ibeta_inv_function.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_beta.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../sf_erf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/beta_function.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/beta_function.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,317 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Beta</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_beta.html" title="Beta Functions">
+<link rel="prev" href="../sf_beta.html" title="Beta Functions">
+<link rel="next" href="ibeta_function.html" title="Incomplete Beta Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../sf_beta.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_beta.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ibeta_function.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_beta_beta_function">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_beta.beta_function"></a><a class="link" href="beta_function.html" title="Beta">Beta</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_beta.beta_function.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.beta_function.synopsis"></a></span><a class="link" href="beta_function.html#math_toolkit.sf_beta.beta_function.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">beta</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">beta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">beta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_beta.beta_function.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.beta_function.description"></a></span><a class="link" href="beta_function.html#math_toolkit.sf_beta.beta_function.description">Description</a>
+ </h5>
+<p>
+ The beta function is defined by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/beta1.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/beta.png" align="middle"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ There are effectively two versions of this function internally: a fully generic
+ version that is slow, but reasonably accurate, and a much more efficient
+ approximation that is used where the number of digits in the significand
+ of T correspond to a certain <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a>. In practice any built-in floating-point type you will
+ encounter has an appropriate <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> defined for it. It is also possible, given enough machine
+ time, to generate further <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a>'s
+ using the program libs/math/tools/lanczos_generator.cpp.
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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.
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.beta_function.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.beta_function.accuracy"></a></span><a class="link" href="beta_function.html#math_toolkit.sf_beta.beta_function.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows peak errors for various domains of input arguments,
+ along with comparisons to the GSL-1.9
+ and Cephes libraries.
+ Note that only results for the widest floating point type on the system are
+ given as narrower types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.sf_beta.beta_function.peak_errors_in_the_beta_function"></a><p class="title"><b>Table 3.7. Peak Errors In the Beta Function</b></p>
+<div class="table-contents"><table class="table" summary="Peak Errors In the Beta Function">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 0.4 < a,b < 100
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 1e-6 < a,b < 36
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=99 Mean=22
+ </p>
+ <p>
+ (GSL Peak=1178 Mean=238)
+ </p>
+ <p>
+ (Cephes=1612)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=10.7 Mean=2.6
+ </p>
+ <p>
+ (GSL Peak=12 Mean=2.0)
+ </p>
+ <p>
+ (Cephes=174)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA32, g++ 3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=112.1 Mean=26.9
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=15.8 Mean=3.6
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64, g++ 3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=61.4 Mean=19.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=12.2 Mean=3.6
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=42.03 Mean=13.94
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=9.8 Mean=3.1
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ Note that the worst errors occur when a or b are large, and that when this
+ is the case the result is very close to zero, so absolute errors will be
+ very small.
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.beta_function.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.beta_function.testing"></a></span><a class="link" href="beta_function.html#math_toolkit.sf_beta.beta_function.testing">Testing</a>
+ </h5>
+<p>
+ A mixture of spot tests of exact values, and randomly generated test data
+ are used: the test data was computed using NTL::RR
+ at 1000-bit precision.
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.beta_function.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.beta_function.implementation"></a></span><a class="link" href="beta_function.html#math_toolkit.sf_beta.beta_function.implementation">Implementation</a>
+ </h5>
+<p>
+ Traditional methods of evaluating the beta function either involve evaluating
+ the gamma functions directly, or taking logarithms and then exponentiating
+ the result. However, the former is prone to overflows for even very modest
+ arguments, while the latter is prone to cancellation errors. As an alternative,
+ if we regard the gamma function as a white-box containing the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a>, then we can combine the power terms:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/beta2.png"></span>
+ </p>
+<p>
+ which is almost the ideal solution, however almost all of the error occurs
+ in evaluating the power terms when <span class="emphasis"><em>a</em></span> or <span class="emphasis"><em>b</em></span>
+ are large. If we assume that <span class="emphasis"><em>a > b</em></span> then the larger
+ of the two power terms can be reduced by a factor of <span class="emphasis"><em>b</em></span>,
+ which immediately cuts the maximum error in half:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/beta3.png"></span>
+ </p>
+<p>
+ This may not be the final solution, but it is very competitive compared to
+ other implementation methods.
+ </p>
+<p>
+ The generic implementation - where no <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> approximation is available - is implemented in a very
+ similar way to the generic version of the gamma function. Again in order
+ to avoid numerical overflow the power terms that prefix the series and continued
+ fraction parts are collected together into:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/beta8.png"></span>
+ </p>
+<p>
+ where la, lb and lc are the integration limits used for a, b, and a+b.
+ </p>
+<p>
+ There are a few special cases worth mentioning:
+ </p>
+<p>
+ When <span class="emphasis"><em>a</em></span> or <span class="emphasis"><em>b</em></span> are less than one,
+ we can use the recurrence relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/beta4.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/beta5.png"></span>
+ </p>
+<p>
+ to move to a more favorable region where they are both greater than 1.
+ </p>
+<p>
+ In addition:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/beta7.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../sf_beta.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_beta.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ibeta_function.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/ibeta_function.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/ibeta_function.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,969 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Incomplete Beta Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_beta.html" title="Beta Functions">
+<link rel="prev" href="beta_function.html" title="Beta">
+<link rel="next" href="ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="beta_function.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_beta.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ibeta_inv_function.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_beta_ibeta_function">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_beta.ibeta_function"></a><a class="link" href="ibeta_function.html" title="Incomplete Beta Functions">Incomplete Beta
+ Functions</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_beta.ibeta_function.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_function.synopsis"></a></span><a class="link" href="ibeta_function.html#math_toolkit.sf_beta.ibeta_function.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">beta</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">beta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">beta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">betac</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">betac</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_beta.ibeta_function.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_function.description"></a></span><a class="link" href="ibeta_function.html#math_toolkit.sf_beta.ibeta_function.description">Description</a>
+ </h5>
+<p>
+ There are four <a href="http://en.wikipedia.org/wiki/Incomplete_beta_function" target="_top">incomplete
+ beta functions</a> : two are normalised versions (also known as <span class="emphasis"><em>regularized</em></span>
+ beta functions) that return values in the range [0, 1], and two are non-normalised
+ and return values in the range [0, <a class="link" href="beta_function.html" title="Beta">beta</a>(a,
+ b)]. Users interested in statistical applications should use the normalised
+ (or regularized
+ ) versions (ibeta and ibetac).
+ </p>
+<p>
+ All of these functions require <span class="emphasis"><em>0 <= x <= 1</em></span>.
+ </p>
+<p>
+ The normalized functions <a class="link" href="ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>
+ and <a class="link" href="ibeta_function.html" title="Incomplete Beta Functions">ibetac</a> require
+ <span class="emphasis"><em>a,b >= 0</em></span>, and in addition that not both <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span> are zero.
+ </p>
+<p>
+ The functions <a class="link" href="beta_function.html" title="Beta">beta</a>
+ and <a class="link" href="ibeta_function.html" title="Incomplete Beta Functions">betac</a> require
+ <span class="emphasis"><em>a,b > 0</em></span>.
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a> when T1, T2 and T3 are different
+ types.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the normalised incomplete beta function of a, b and x:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta3.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/ibeta.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the normalised complement of the incomplete beta function of a, b
+ and x:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta4.png"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">beta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">beta</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the full (non-normalised) incomplete beta function of a, b and x:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta1.png"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">betac</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">betac</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the full (non-normalised) complement of the incomplete beta function
+ of a, b and x:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta2.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.ibeta_function.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_function.accuracy"></a></span><a class="link" href="ibeta_function.html#math_toolkit.sf_beta.ibeta_function.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following tables give peak and mean relative errors in over various domains
+ of a, b and x, along with comparisons to the GSL-1.9
+ and Cephes libraries.
+ Note that only results for the widest floating-point type on the system are
+ given as narrower types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<p>
+ Note that the results for 80 and 128-bit long doubles are noticeably higher
+ than for doubles: this is because the wider exponent range of these types
+ allow more extreme test cases to be tested. For example expected results
+ that are zero at double precision, may be finite but exceptionally small
+ with the wider exponent range of the long double types.
+ </p>
+<div class="table">
+<a name="math_toolkit.sf_beta.ibeta_function.errors_in_the_function_ibeta_a_b"></a><p class="title"><b>Table 3.8. Errors In the Function ibeta(a,b,x)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function ibeta(a,b,x)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 0 < a,b < 10
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+<th>
+ <p>
+ 0 < a,b < 100
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+<th>
+ <p>
+ 1x10<sup>-5</sup> < a,b < 1x10<sup>5</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=42.3 Mean=2.9
+ </p>
+ <p>
+ (GSL Peak=682 Mean=32.5)
+ </p>
+ <p>
+ (Cephes Peak=42.7
+ Mean=7.0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=108 Mean=16.6
+ </p>
+ <p>
+ (GSL Peak=690 Mean=151)
+ </p>
+ <p>
+ (Cephes Peak=1545
+ Mean=218)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4x10<sup>3</sup>   Mean=203
+ </p>
+ <p>
+ (GSL Peak~3x10<sup>5</sup>   Mean~2x10<sup>4</sup>  )
+ </p>
+ <p>
+ (Cephes Peak~5x10<sup>5</sup>   Mean~2x10<sup>4</sup>  )
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA32, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=21.9 Mean=3.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=270.7 Mean=26.8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~5x10<sup>4</sup>   Mean=3x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=15.4 Mean=3.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=112.9 Mean=14.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~5x10<sup>4</sup>   Mean=3x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=20.9 Mean=2.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=88.1 Mean=14.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~2x10<sup>4</sup>   Mean=1x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_beta.ibeta_function.errors_in_the_function_ibetac_a_"></a><p class="title"><b>Table 3.9. Errors In the Function ibetac(a,b,x)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function ibetac(a,b,x)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 0 < a,b < 10
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+<th>
+ <p>
+ 0 < a,b < 100
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+<th>
+ <p>
+ 1x10<sup>-5</sup> < a,b < 1x10<sup>5</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=13.9 Mean=2.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=56.2 Mean=14
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3x10<sup>3</sup>   Mean=159
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA32, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=21.1 Mean=3.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=221.7 Mean=25.8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~9x10<sup>4</sup>   Mean=3x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=10.6 Mean=2.2
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=73.9 Mean=11.9
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~9x10<sup>4</sup>   Mean=3x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=9.9 Mean=2.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=117.7 Mean=15.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~3x10<sup>4</sup>   Mean=1x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_beta.ibeta_function.errors_in_the_function_beta_a_b_"></a><p class="title"><b>Table 3.10. Errors In the Function beta(a, b, x)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function beta(a, b, x)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 0 < a,b < 10
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+<th>
+ <p>
+ 0 < a,b < 100
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+<th>
+ <p>
+ 1x10<sup>-5</sup> < a,b < 1x10<sup>5</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=39 Mean=2.9
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=91 Mean=12.7
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=635 Mean=25
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA32, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=26 Mean=3.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=180.7 Mean=30.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~7x10<sup>4</sup>   Mean=3x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=13 Mean=2.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=67.1 Mean=13.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~7x10<sup>4</sup>   Mean=3x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=27.3 Mean=3.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=49.8 Mean=9.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~6x10<sup>4</sup>   Mean=3x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_beta.ibeta_function.errors_in_the_function_betac_a_b"></a><p class="title"><b>Table 3.11. Errors In the Function betac(a,b,x)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function betac(a,b,x)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 0 < a,b < 10
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+<th>
+ <p>
+ 0 < a,b < 100
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+<th>
+ <p>
+ 1x10<sup>-5</sup> < a,b < 1x10<sup>5</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0 < x < 1
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=12.0 Mean=2.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=91 Mean=15
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4x10<sup>3</sup>   Mean=113
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA32, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=19.8 Mean=3.8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=295.1 Mean=33.9
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~1x10<sup>5</sup>   Mean=5x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=11.2 Mean=2.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=63.5 Mean=13.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~1x10<sup>5</sup>   Mean=5x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=15.6 Mean=3.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=39.8 Mean=8.9
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~9x10<sup>4</sup>   Mean=5x10<sup>3</sup>  
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.sf_beta.ibeta_function.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_function.testing"></a></span><a class="link" href="ibeta_function.html#math_toolkit.sf_beta.ibeta_function.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of tests: spot tests compare values taken from <a href="http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=BetaRegularized" target="_top">Mathworld's
+ online function evaluator</a> with this implementation: they provide
+ a basic "sanity check" for the implementation, with one spot-test
+ in each implementation-domain (see implementation notes below).
+ </p>
+<p>
+ Accuracy tests use data generated at very high precision (with <a href="http://shoup.net/ntl/doc/RR.txt" target="_top">NTL
+ RR class</a> set at 1000-bit precision), using the "textbook"
+ continued fraction representation (refer to the first continued fraction
+ in the implementation discussion below). Note that this continued fraction
+ is <span class="emphasis"><em>not</em></span> used in the implementation, and therefore we
+ have test data that is fully independent of the code.
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.ibeta_function.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_function.implementation"></a></span><a class="link" href="ibeta_function.html#math_toolkit.sf_beta.ibeta_function.implementation">Implementation</a>
+ </h5>
+<p>
+ This implementation is closely based upon <a href="http://portal.acm.org/citation.cfm?doid=131766.131776" target="_top">"Algorithm
+ 708; Significant digit computation of the incomplete beta function ratios",
+ DiDonato and Morris, ACM, 1992.</a>
+ </p>
+<p>
+ All four of these functions share a common implementation: this is passed
+ both x and y, and can return either p or q where these are related by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv5.png"></span>
+ </p>
+<p>
+ so at any point we can swap a for b, x for y and p for q if this results
+ in a more favourable position. Generally such swaps are performed so that
+ we always compute a value less than 0.9: when required this can then be subtracted
+ from 1 without undue cancellation error.
+ </p>
+<p>
+ The following continued fraction representation is found in many textbooks
+ but is not used in this implementation - it's both slower and less accurate
+ than the alternatives - however it is used to generate test data:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta5.png"></span>
+ </p>
+<p>
+ The following continued fraction is due to <a href="http://portal.acm.org/citation.cfm?doid=131766.131776" target="_top">Didonato
+ and Morris</a>, and is used in this implementation when a and b are both
+ greater than 1:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta6.png"></span>
+ </p>
+<p>
+ For smallish b and x then a series representation can be used:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta7.png"></span>
+ </p>
+<p>
+ When b << a then the transition from 0 to 1 occurs very close to x
+ = 1 and some care has to be taken over the method of computation, in that
+ case the following series representation is used:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta8.png"></span>
+
+ </p>
+<p>
+ Where Q(a,x) is an <a href="http://functions.wolfram.com/GammaBetaErf/Gamma2/" target="_top">incomplete
+ gamma function</a>. Note that this method relies on keeping a table of
+ all the p<sub>n </sub> previously computed, which does limit the precision of the method,
+ depending upon the size of the table used.
+ </p>
+<p>
+ When <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span> are both small integers,
+ then we can relate the incomplete beta to the binomial distribution and use
+ the following finite sum:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta12.png"></span>
+ </p>
+<p>
+ Finally we can sidestep difficult areas, or move to an area with a more efficient
+ means of computation, by using the duplication formulae:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta10.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta11.png"></span>
+ </p>
+<p>
+ The domains of a, b and x for which the various methods are used are identical
+ to those described in the <a href="http://portal.acm.org/citation.cfm?doid=131766.131776" target="_top">Didonato
+ and Morris TOMS 708 paper</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="beta_function.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_beta.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="ibeta_inv_function.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/ibeta_inv_function.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_beta/ibeta_inv_function.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,511 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>The Incomplete Beta Function Inverses</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_beta.html" title="Beta Functions">
+<link rel="prev" href="ibeta_function.html" title="Incomplete Beta Functions">
+<link rel="next" href="beta_derivative.html" title="Derivative of the Incomplete Beta Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="ibeta_function.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_beta.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="beta_derivative.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_beta_ibeta_inv_function">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_beta.ibeta_inv_function"></a><a class="link" href="ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">The Incomplete
+ Beta Function Inverses</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">beta</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">T4</span><span class="special">*</span> <span class="identifier">py</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">T4</span><span class="special">*</span> <span class="identifier">py</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">,</span> <span class="identifier">T4</span><span class="special">*</span> <span class="identifier">py</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">,</span> <span class="identifier">T4</span><span class="special">*</span> <span class="identifier">py</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_invb</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_invb</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_invb</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_invb</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_beta.ibeta_inv_function.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_inv_function.description"></a></span><a class="link" href="ibeta_inv_function.html#math_toolkit.sf_beta.ibeta_inv_function.description">Description</a>
+ </h5>
+<p>
+ There are six <a href="http://functions.wolfram.com/GammaBetaErf/" target="_top">incomplete
+ beta function inverses</a> which allow you solve for any of the three
+ parameters to the incomplete beta, starting from either the result of the
+ incomplete beta (p) or its complement (q).
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ When people normally talk about the inverse of the incomplete beta function,
+ they are talking about inverting on parameter <span class="emphasis"><em>x</em></span>. These
+ are implemented here as ibeta_inv and ibetac_inv, and are by far the most
+ efficient of the inverses presented here.
+ </p>
+<p>
+ The inverses on the <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span> parameters
+ find use in some statistical applications, but have to be computed by rather
+ brute force numerical techniques and are consequently several times slower.
+ These are implemented here as ibeta_inva and ibeta_invb, and complement
+ versions ibetac_inva and ibetac_invb.
+ </p>
+</td></tr>
+</table></div>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a> when called with arguments T1...TN
+ of different types.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">T4</span><span class="special">*</span> <span class="identifier">py</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">T4</span><span class="special">*</span> <span class="identifier">py</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value <span class="emphasis"><em>x</em></span> such that: <code class="computeroutput"><span class="identifier">p</span>
+ <span class="special">=</span> <span class="identifier">ibeta</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">b</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span></code> and
+ sets <code class="computeroutput"><span class="special">*</span><span class="identifier">py</span>
+ <span class="special">=</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">x</span></code> when
+ the <code class="computeroutput"><span class="identifier">py</span></code> parameter is provided
+ and is non-null. Note that internally this function computes whichever is
+ the smaller of <code class="computeroutput"><span class="identifier">x</span></code> and <code class="computeroutput"><span class="number">1</span><span class="special">-</span><span class="identifier">x</span></code>,
+ and therefore the value assigned to <code class="computeroutput"><span class="special">*</span><span class="identifier">py</span></code> is free from cancellation errors. That
+ means that even if the function returns <code class="computeroutput"><span class="number">1</span></code>,
+ the value stored in <code class="computeroutput"><span class="special">*</span><span class="identifier">py</span></code>
+ may be non-zero, albeit very small.
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>a,b > 0</em></span> and <span class="emphasis"><em>0 <= p <= 1</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">,</span> <span class="identifier">T4</span><span class="special">*</span> <span class="identifier">py</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">q</span><span class="special">,</span> <span class="identifier">T4</span><span class="special">*</span> <span class="identifier">py</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value <span class="emphasis"><em>x</em></span> such that: <code class="computeroutput"><span class="identifier">q</span>
+ <span class="special">=</span> <span class="identifier">ibetac</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">b</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span></code> and
+ sets <code class="computeroutput"><span class="special">*</span><span class="identifier">py</span>
+ <span class="special">=</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">x</span></code> when
+ the <code class="computeroutput"><span class="identifier">py</span></code> parameter is provided
+ and is non-null. Note that internally this function computes whichever is
+ the smaller of <code class="computeroutput"><span class="identifier">x</span></code> and <code class="computeroutput"><span class="number">1</span><span class="special">-</span><span class="identifier">x</span></code>,
+ and therefore the value assigned to <code class="computeroutput"><span class="special">*</span><span class="identifier">py</span></code> is free from cancellation errors. That
+ means that even if the function returns <code class="computeroutput"><span class="number">1</span></code>,
+ the value stored in <code class="computeroutput"><span class="special">*</span><span class="identifier">py</span></code>
+ may be non-zero, albeit very small.
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>a,b > 0</em></span> and <span class="emphasis"><em>0 <= q <= 1</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value <span class="emphasis"><em>a</em></span> such that: <code class="computeroutput"><span class="identifier">p</span>
+ <span class="special">=</span> <span class="identifier">ibeta</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">b</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span></code>
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>b > 0</em></span>, <span class="emphasis"><em>0 < x < 1</em></span>
+ and <span class="emphasis"><em>0 <= p <= 1</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value <span class="emphasis"><em>a</em></span> such that: <code class="computeroutput"><span class="identifier">q</span>
+ <span class="special">=</span> <span class="identifier">ibetac</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">b</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span></code>
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>b > 0</em></span>, <span class="emphasis"><em>0 < x < 1</em></span>
+ and <span class="emphasis"><em>0 <= q <= 1</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_invb</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibeta_invb</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value <span class="emphasis"><em>b</em></span> such that: <code class="computeroutput"><span class="identifier">p</span>
+ <span class="special">=</span> <span class="identifier">ibeta</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">b</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span></code>
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>a > 0</em></span>, <span class="emphasis"><em>0 < x < 1</em></span>
+ and <span class="emphasis"><em>0 <= p <= 1</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_invb</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">ibetac_invb</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value <span class="emphasis"><em>b</em></span> such that: <code class="computeroutput"><span class="identifier">q</span>
+ <span class="special">=</span> <span class="identifier">ibetac</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">b</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span></code>
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>a > 0</em></span>, <span class="emphasis"><em>0 < x < 1</em></span>
+ and <span class="emphasis"><em>0 <= q <= 1</em></span>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.ibeta_inv_function.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_inv_function.accuracy"></a></span><a class="link" href="ibeta_inv_function.html#math_toolkit.sf_beta.ibeta_inv_function.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The accuracy of these functions should closely follow that of the regular
+ forward incomplete beta functions. However, note that in some parts of their
+ domain, these functions can be extremely sensitive to changes in input, particularly
+ when the argument <span class="emphasis"><em>p</em></span> (or it's complement <span class="emphasis"><em>q</em></span>)
+ is very close to <code class="computeroutput"><span class="number">0</span></code> or <code class="computeroutput"><span class="number">1</span></code>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.ibeta_inv_function.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_inv_function.testing"></a></span><a class="link" href="ibeta_inv_function.html#math_toolkit.sf_beta.ibeta_inv_function.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of tests:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Basic sanity checks attempt to "round-trip" from <span class="emphasis"><em>a,
+ b</em></span> and <span class="emphasis"><em>x</em></span> to <span class="emphasis"><em>p</em></span> or
+ <span class="emphasis"><em>q</em></span> and back again. These tests have quite generous
+ tolerances: in general both the incomplete beta and its inverses change
+ so rapidly, that round tripping to more than a couple of significant
+ digits isn't possible. This is especially true when <span class="emphasis"><em>p</em></span>
+ or <span class="emphasis"><em>q</em></span> is very near one: in this case there isn't
+ enough "information content" in the input to the inverse function
+ to get back where you started.
+ </li>
+<li class="listitem">
+ Accuracy checks using high precision test values. These measure the accuracy
+ of the result, given exact input values.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.sf_beta.ibeta_inv_function.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_inv_function.implementation_of_ibeta_inv_and_"></a></span><a class="link" href="ibeta_inv_function.html#math_toolkit.sf_beta.ibeta_inv_function.implementation_of_ibeta_inv_and_">Implementation
+ of ibeta_inv and ibetac_inv</a>
+ </h5>
+<p>
+ These two functions share a common implementation.
+ </p>
+<p>
+ First an initial approximation to x is computed then the last few bits are
+ cleaned up using <a href="http://en.wikipedia.org/wiki/Simple_rational_approximation" target="_top">Halley
+ iteration</a>. The iteration limit is set to 1/2 of the number of bits
+ in T, which by experiment is sufficient to ensure that the inverses are at
+ least as accurate as the normal incomplete beta functions. Up to 5 iterations
+ may be required in extreme cases, although normally only one or two are required.
+ Further, the number of iterations required decreases with increasing <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span> (which generally form the more important use cases).
+ </p>
+<p>
+ The initial guesses used for iteration are obtained as follows:
+ </p>
+<p>
+ Firstly recall that:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv5.png"></span>
+ </p>
+<p>
+ We may wish to start from either p or q, and to calculate either x or y.
+ In addition at any stage we can exchange a for b, p for q, and x for y if
+ it results in a more manageable problem.
+ </p>
+<p>
+ For <code class="computeroutput"><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span> <span class="special">>=</span> <span class="number">5</span></code> the initial guess is computed using the methods
+ described in:
+ </p>
+<p>
+ Asymptotic Inversion of the Incomplete Beta Function, by N. M. Temme.
+ Journal of Computational and Applied Mathematics 41 (1992) 145-157.
+ </p>
+<p>
+ The nearly symmetrical case (section 2 of the paper) is used for
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv2.png"></span>
+ </p>
+<p>
+ and involves solving the inverse error function first. The method is accurate
+ to at least 2 decimal digits when <code class="literal">a = 5</code> rising to at least
+ 8 digits when <code class="literal">a = 10<sup>5</sup></code>.
+ </p>
+<p>
+ The general error function case (section 3 of the paper) is used for
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv3.png"></span>
+ </p>
+<p>
+ and again expresses the inverse incomplete beta in terms of the inverse of
+ the error function. The method is accurate to at least 2 decimal digits when
+ <code class="literal">a+b = 5</code> rising to 11 digits when <code class="literal">a+b = 10<sup>5</sup></code>.
+ However, when the result is expected to be very small, and when a+b is also
+ small, then its accuracy tails off, in this case when p<sup>1/a</sup> < 0.0025 then
+ it is better to use the following as an initial estimate:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv4.png"></span>
+ </p>
+<p>
+ Finally the for all other cases where <code class="computeroutput"><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span> <span class="special">></span>
+ <span class="number">5</span></code> the method of section 4 of the paper
+ is used. This expresses the inverse incomplete beta in terms of the inverse
+ of the incomplete gamma function, and is therefore significantly more expensive
+ to compute than the other cases. However the method is accurate to at least
+ 3 decimal digits when <code class="literal">a = 5</code> rising to at least 10 digits
+ when <code class="literal">a = 10<sup>5</sup></code>. This method is limited to a > b, and
+ therefore we need to perform an exchange a for b, p for q and x for y when
+ this is not the case. In addition when p is close to 1 the method is inaccurate
+ should we actually want y rather than x as output. Therefore when q is small
+ (<code class="literal">q<sup>1/p</sup> < 10<sup>-3</sup></code>) we use:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv6.png"></span>
+ </p>
+<p>
+ which is both cheaper to compute than the full method, and a more accurate
+ estimate on q.
+ </p>
+<p>
+ When a and b are both small there is a distinct lack of information in the
+ literature on how to proceed. I am extremely grateful to Prof Nico Temme
+ who provided the following information with a great deal of patience and
+ explanation on his part. Any errors that follow are entirely my own, and
+ not Prof Temme's.
+ </p>
+<p>
+ When a and b are both less than 1, then there is a point of inflection in
+ the incomplete beta at point <code class="computeroutput"><span class="identifier">xs</span>
+ <span class="special">=</span> <span class="special">(</span><span class="number">1</span> <span class="special">-</span> <span class="identifier">a</span><span class="special">)</span> <span class="special">/</span> <span class="special">(</span><span class="number">2</span> <span class="special">-</span> <span class="identifier">a</span>
+ <span class="special">-</span> <span class="identifier">b</span><span class="special">)</span></code>. Therefore if <code class="literal">p > I<sub>x</sub>(a,b)</code>
+ we swap a for b, p for q and x for y, so that now we always look for a point
+ x below the point of inflection <code class="computeroutput"><span class="identifier">xs</span></code>,
+ and on a convex curve. An initial estimate for x is made with:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv7.png"></span>
+ </p>
+<p>
+ which is provably below the true value for x: <a href="http://en.wikipedia.org/wiki/Newton%27s_method" target="_top">Newton
+ iteration</a> will therefore smoothly converge on x without problems
+ caused by overshooting etc.
+ </p>
+<p>
+ When a and b are both greater than 1, but a+b is too small to use the other
+ methods mentioned above, we proceed as follows. Observe that there is a point
+ of inflection in the incomplete beta at <code class="computeroutput"><span class="identifier">xs</span>
+ <span class="special">=</span> <span class="special">(</span><span class="number">1</span> <span class="special">-</span> <span class="identifier">a</span><span class="special">)</span> <span class="special">/</span> <span class="special">(</span><span class="number">2</span> <span class="special">-</span> <span class="identifier">a</span>
+ <span class="special">-</span> <span class="identifier">b</span><span class="special">)</span></code>. Therefore if <code class="literal">p > I<sub>x</sub>(a,b)</code>
+ we swap a for b, p for q and x for y, so that now we always look for a point
+ x below the point of inflection <code class="computeroutput"><span class="identifier">xs</span></code>,
+ and on a concave curve. An initial estimate for x is made with:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv4.png"></span>
+ </p>
+<p>
+ which can be improved somewhat to:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv1.png"></span>
+ </p>
+<p>
+ when b and x are both small (I've used b < a and x < 0.2). This actually
+ under-estimates x, which drops us on the wrong side of x for Newton iteration
+ to converge monotonically. However, use of higher derivatives and Halley
+ iteration keeps everything under control.
+ </p>
+<p>
+ The final case to be considered if when one of a and b is less than or equal
+ to 1, and the other greater that 1. Here, if b < a we swap a for b, p
+ for q and x for y. Now the curve of the incomplete beta is convex with no
+ points of inflection in [0,1]. For small p, x can be estimated using
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv4.png"></span>
+ </p>
+<p>
+ which under-estimates x, and drops us on the right side of the true value
+ for Newton iteration to converge monotonically. However, when p is large
+ this can quite badly underestimate x. This is especially an issue when we
+ really want to find y, in which case this method can be an arbitrary number
+ of order of magnitudes out, leading to very poor convergence during iteration.
+ </p>
+<p>
+ Things can be improved by considering the incomplete beta as a distorted
+ quarter circle, and estimating y from:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/ibeta_inv8.png"></span>
+ </p>
+<p>
+ This doesn't guarantee that we will drop in on the right side of x for monotonic
+ convergence, but it does get us close enough that Halley iteration rapidly
+ converges on the true value.
+ </p>
+<h5>
+<a name="math_toolkit.sf_beta.ibeta_inv_function.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_beta.ibeta_inv_function.implementation_of_inverses_on_th"></a></span><a class="link" href="ibeta_inv_function.html#math_toolkit.sf_beta.ibeta_inv_function.implementation_of_inverses_on_th">Implementation
+ of inverses on the a and b parameters</a>
+ </h5>
+<p>
+ These four functions share a common implementation.
+ </p>
+<p>
+ First an initial approximation is computed for <span class="emphasis"><em>a</em></span> or
+ <span class="emphasis"><em>b</em></span>: where possible this uses a Cornish-Fisher expansion
+ for the negative binomial distribution to get within around 1 of the result.
+ However, when <span class="emphasis"><em>a</em></span> or <span class="emphasis"><em>b</em></span> are very small
+ the Cornish Fisher expansion is not usable, in this case the initial approximation
+ is chosen so that I<sub>x</sub>(a, b) is near the middle of the range [0,1].
+ </p>
+<p>
+ This initial guess is then used as a starting value for a generic root finding
+ algorithm. The algorithm converges rapidly on the root once it has been bracketed,
+ but bracketing the root may take several iterations. A better initial approximation
+ for <span class="emphasis"><em>a</em></span> or <span class="emphasis"><em>b</em></span> would improve these
+ functions quite substantially: currently 10-20 incomplete beta function invocations
+ are required to find the root.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="ibeta_function.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_beta.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="beta_derivative.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_erf.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_erf.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,40 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Error Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="sf_beta/beta_derivative.html" title="Derivative of the Incomplete Beta Function">
+<link rel="next" href="sf_erf/error_function.html" title="Error Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sf_beta/beta_derivative.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sf_erf/error_function.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_erf">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.sf_erf"></a><a class="link" href="sf_erf.html" title="Error Functions">Error Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Error Functions</span></dt>
+<dt><span class="section">Error Function Inverses</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sf_beta/beta_derivative.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sf_erf/error_function.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_erf/error_function.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_erf/error_function.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,620 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Error Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_erf.html" title="Error Functions">
+<link rel="prev" href="../sf_erf.html" title="Error Functions">
+<link rel="next" href="error_inv.html" title="Error Function Inverses">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../sf_erf.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_erf.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="error_inv.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_erf_error_function">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_erf.error_function"></a><a class="link" href="error_function.html" title="Error Functions">Error Functions</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_erf.error_function.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_function.synopsis"></a></span><a class="link" href="error_function.html#math_toolkit.sf_erf.error_function.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">erf</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erf</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erf</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erfc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erfc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return type is <code class="computeroutput"><span class="keyword">double</span></code> if T is an integer type, and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_erf.error_function.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_function.description"></a></span><a class="link" href="error_function.html#math_toolkit.sf_erf.error_function.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erf</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erf</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the <a href="http://en.wikipedia.org/wiki/Error_function" target="_top">error
+ function</a> erf
+ of z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/erf1.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/erf.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erfc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erfc</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the complement of the <a href="http://functions.wolfram.com/GammaBetaErf/Erfc/" target="_top">error
+ function</a> of z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/erf2.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/erfc.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.sf_erf.error_function.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_function.accuracy"></a></span><a class="link" href="error_function.html#math_toolkit.sf_erf.error_function.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon) found on
+ various platforms with various floating point types, along with comparisons
+ to the GSL-1.9, GNU C Lib, <a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> and Cephes
+ libraries. Unless otherwise specified any floating point type that is narrower
+ than the one shown will have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.sf_erf.error_function.errors_in_the_function_erf_z"></a><p class="title"><b>Table 3.12. Errors In the Function erf(z)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function erf(z)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ z < 0.5
+ </p>
+ </th>
+<th>
+ <p>
+ 0.5 < z < 8
+ </p>
+ </th>
+<th>
+ <p>
+ z > 8
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0 Mean=0
+ </p>
+ <p>
+ GSL Peak=2.0 Mean=0.3
+ </p>
+ <p>
+ Cephes Peak=1.1
+ Mean=0.7
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.9 Mean=0.09
+ </p>
+ <p>
+ GSL Peak=2.3 Mean=0.3
+ </p>
+ <p>
+ Cephes Peak=1.3
+ Mean=0.2
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0 Mean=0
+ </p>
+ <p>
+ GSL Peak=0 Mean=0
+ </p>
+ <p>
+ Cephes Peak=0
+ Mean=0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA32, gcc-3.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.7 Mean=0.07
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0.9 Mean=0.2
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.9 Mean=0.2
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0.9 Mean=0.07
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0 Mean=0
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0 Mean=0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.7 Mean=0.07
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0 Mean=0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.9 Mean=0.1
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0.5 Mean=0.03
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0 Mean=0
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0 Mean=0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.8 Mean=0.1
+ </p>
+ <p>
+ <a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Lib Peak=0.9 Mean=0.2
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.9 Mean=0.1
+ </p>
+ <p>
+ <a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Lib Peak=0.5 Mean=0.02
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0 Mean=0
+ </p>
+ <p>
+ <a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Lib Peak=0 Mean=0
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_erf.error_function.errors_in_the_function_erfc_z"></a><p class="title"><b>Table 3.13. Errors In the Function erfc(z)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function erfc(z)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ z < 0.5
+ </p>
+ </th>
+<th>
+ <p>
+ 0.5 < z < 8
+ </p>
+ </th>
+<th>
+ <p>
+ z > 8
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.7 Mean=0.06
+ </p>
+ <p>
+ GSL Peak=1.0 Mean=0.4
+ </p>
+ <p>
+ Cephes Peak=0.7
+ Mean=0.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.99 Mean=0.3
+ </p>
+ <p>
+ GSL Peak=2.6 Mean=0.6
+ </p>
+ <p>
+ Cephes Peak=3.6
+ Mean=0.7
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.0 Mean=0.2
+ </p>
+ <p>
+ GSL Peak=3.9 Mean=0.4
+ </p>
+ <p>
+ Cephes Peak=2.7
+ Mean=0.4
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA32, gcc-3.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0 Mean=0
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0 Mean=0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.4 Mean=0.3
+ </p>
+ <p>
+ GNU C Lib
+ Peak=1.3 Mean=0.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.6 Mean=0.4
+ </p>
+ <p>
+ GNU C Lib
+ Peak=1.3 Mean=0.4
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0 Mean=0
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0 Mean=0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.4 Mean=0.3
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0 Mean=0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.5 Mean=0.4
+ </p>
+ <p>
+ GNU C Lib
+ Peak=0 Mean=0
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0 Mean=0
+ </p>
+ <p>
+ <a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak=0 Mean=0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.5 Mean=0.3
+ </p>
+ <p>
+ <a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak=0.9 Mean=0.08
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.6 Mean=0.4
+ </p>
+ <p>
+ <a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak=0.9 Mean=0.1
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.sf_erf.error_function.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_function.testing"></a></span><a class="link" href="error_function.html#math_toolkit.sf_erf.error_function.testing">Testing</a>
+ </h5>
+<p>
+ The tests for these functions come in two parts: basic sanity checks use
+ spot values calculated using <a href="http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=Erf" target="_top">Mathworld's
+ online evaluator</a>, while accuracy checks use high-precision test values
+ calculated at 1000-bit precision with NTL::RR
+ and this implementation. Note that the generic and type-specific versions
+ of these functions use differing implementations internally, so this gives
+ us reasonably independent test data. Using our test data to test other "known
+ good" implementations also provides an additional sanity check.
+ </p>
+<h5>
+<a name="math_toolkit.sf_erf.error_function.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_function.implementation"></a></span><a class="link" href="error_function.html#math_toolkit.sf_erf.error_function.implementation">Implementation</a>
+ </h5>
+<p>
+ All versions of these functions first use the usual reflection formulas to
+ make their arguments positive:
+ </p>
+<pre class="programlisting"><span class="identifier">erf</span><span class="special">(-</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">erf</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span>
+
+<span class="identifier">erfc</span><span class="special">(-</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="number">2</span> <span class="special">-</span> <span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span> <span class="comment">// preferred when -z < -0.5</span>
+
+<span class="identifier">erfc</span><span class="special">(-</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="number">1</span> <span class="special">+</span> <span class="identifier">erf</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span> <span class="comment">// preferred when -0.5 <= -z < 0</span>
+</pre>
+<p>
+ The generic versions of these functions are implemented in terms of the incomplete
+ gamma function.
+ </p>
+<p>
+ When the significand (mantissa) size is recognised (currently for 53, 64
+ and 113-bit reals, plus single-precision 24-bit handled via promotion to
+ double) then a series of rational approximations <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> are used.
+ </p>
+<p>
+ For <code class="computeroutput"><span class="identifier">z</span> <span class="special"><=</span>
+ <span class="number">0.5</span></code> then a rational approximation to
+ erf is used, based on the observation that erf is an odd function and therefore
+ erf is calculated using:
+ </p>
+<pre class="programlisting"><span class="identifier">erf</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">z</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">C</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">));</span>
+</pre>
+<p>
+ where the rational approximation R(z*z) is optimised for absolute error:
+ as long as its absolute error is small enough compared to the constant C,
+ then any round-off error incurred during the computation of R(z*z) will effectively
+ disappear from the result. As a result the error for erf and erfc in this
+ region is very low: the last bit is incorrect in only a very small number
+ of cases.
+ </p>
+<p>
+ For <code class="computeroutput"><span class="identifier">z</span> <span class="special">></span>
+ <span class="number">0.5</span></code> we observe that over a small interval
+ [a, b) then:
+ </p>
+<pre class="programlisting"><span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">exp</span><span class="special">(</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">z</span> <span class="special">~</span> <span class="identifier">c</span>
+</pre>
+<p>
+ for some constant c.
+ </p>
+<p>
+ Therefore for <code class="computeroutput"><span class="identifier">z</span> <span class="special">></span>
+ <span class="number">0.5</span></code> we calculate erfc using:
+ </p>
+<pre class="programlisting"><span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">exp</span><span class="special">(-</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">C</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span> <span class="special">-</span> <span class="identifier">B</span><span class="special">))</span> <span class="special">/</span> <span class="identifier">z</span><span class="special">;</span>
+</pre>
+<p>
+ Again R(z - B) is optimised for absolute error, and the constant <code class="computeroutput"><span class="identifier">C</span></code> is the average of <code class="computeroutput"><span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span>
+ <span class="special">*</span> <span class="identifier">exp</span><span class="special">(</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">)</span> <span class="special">*</span>
+ <span class="identifier">z</span></code> taken at the endpoints of the
+ range. Once again, as long as the absolute error in R(z - B) is small compared
+ to <code class="computeroutput"><span class="identifier">c</span></code> then <code class="computeroutput"><span class="identifier">c</span>
+ <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span> <span class="special">-</span>
+ <span class="identifier">B</span><span class="special">)</span></code>
+ will be correctly rounded, and the error in the result will depend only on
+ the accuracy of the exp function. In practice, in all but a very small number
+ of cases, the error is confined to the last bit of the result. The constant
+ <code class="computeroutput"><span class="identifier">B</span></code> is chosen so that the left
+ hand end of the range of the rational approximation is 0.
+ </p>
+<p>
+ For large <code class="computeroutput"><span class="identifier">z</span></code> over a range
+ [a, +∞] the above approximation is modified to:
+ </p>
+<pre class="programlisting"><span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">exp</span><span class="special">(-</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">C</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="number">1</span> <span class="special">/</span> <span class="identifier">z</span><span class="special">))</span> <span class="special">/</span> <span class="identifier">z</span><span class="special">;</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../sf_erf.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_erf.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="error_inv.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_erf/error_inv.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_erf/error_inv.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,192 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Error Function Inverses</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_erf.html" title="Error Functions">
+<link rel="prev" href="error_function.html" title="Error Functions">
+<link rel="next" href="../sf_poly.html" title="Polynomials">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="error_function.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_erf.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../sf_poly.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_erf_error_inv">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_erf.error_inv"></a><a class="link" href="error_inv.html" title="Error Function Inverses">Error Function Inverses</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_erf.error_inv.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_inv.synopsis"></a></span><a class="link" href="error_inv.html#math_toolkit.sf_erf.error_inv.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">erf</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erf_inv</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erf_inv</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erfc_inv</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erfc_inv</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return type is <code class="computeroutput"><span class="keyword">double</span></code> if T is an integer type, and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_erf.error_inv.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_inv.description"></a></span><a class="link" href="error_inv.html#math_toolkit.sf_erf.error_inv.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erf_inv</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erf_inv</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the <a href="http://functions.wolfram.com/GammaBetaErf/InverseErf/" target="_top">inverse
+ error function</a> of z, that is a value x such that:
+ </p>
+<pre class="programlisting"><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">erf</span><span class="special">(</span><span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/erf_inv.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erfc_inv</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">erfc_inv</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the inverse of the complement of the error function of z, that is
+ a value x such that:
+ </p>
+<pre class="programlisting"><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">erfc</span><span class="special">(</span><span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/erfc_inv.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.sf_erf.error_inv.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_inv.accuracy"></a></span><a class="link" href="error_inv.html#math_toolkit.sf_erf.error_inv.accuracy">Accuracy</a>
+ </h5>
+<p>
+ For types up to and including 80-bit long doubles the approximations used
+ are accurate to less than ~ 2 epsilon. For higher precision types these functions
+ have the same accuracy as the <a class="link" href="error_function.html" title="Error Functions">forward
+ error functions</a>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_erf.error_inv.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_inv.testing"></a></span><a class="link" href="error_inv.html#math_toolkit.sf_erf.error_inv.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of tests:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Basic sanity checks attempt to "round-trip" from <span class="emphasis"><em>x</em></span>
+ to <span class="emphasis"><em>p</em></span> and back again. These tests have quite generous
+ tolerances: in general both the error functions and their inverses change
+ so rapidly in some places that round tripping to more than a couple of
+ significant digits isn't possible. This is especially true when <span class="emphasis"><em>p</em></span>
+ is very near one: in this case there isn't enough "information content"
+ in the input to the inverse function to get back where you started.
+ </li>
+<li class="listitem">
+ Accuracy checks using high-precision test values. These measure the accuracy
+ of the result, given <span class="emphasis"><em>exact</em></span> input values.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.sf_erf.error_inv.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_erf.error_inv.implementation"></a></span><a class="link" href="error_inv.html#math_toolkit.sf_erf.error_inv.implementation">Implementation</a>
+ </h5>
+<p>
+ These functions use a rational approximation <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> to calculate an initial approximation to the result that is
+ accurate to ~10<sup>-19</sup>, then only if that has insufficient accuracy compared
+ to the epsilon for T, do we clean up the result using <a href="http://en.wikipedia.org/wiki/Simple_rational_approximation" target="_top">Halley
+ iteration</a>.
+ </p>
+<p>
+ Constructing rational approximations to the erf/erfc functions is actually
+ surprisingly hard, especially at high precision. For this reason no attempt
+ has been made to achieve 10<sup>-34 </sup> accuracy suitable for use with 128-bit reals.
+ </p>
+<p>
+ In the following discussion, <span class="emphasis"><em>p</em></span> is the value passed to
+ erf_inv, and <span class="emphasis"><em>q</em></span> is the value passed to erfc_inv, so that
+ <span class="emphasis"><em>p = 1 - q</em></span> and <span class="emphasis"><em>q = 1 - p</em></span> and in
+ both cases we want to solve for the same result <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ For <span class="emphasis"><em>p < 0.5</em></span> the inverse erf function is reasonably
+ smooth and the approximation:
+ </p>
+<pre class="programlisting"><span class="identifier">x</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">(</span><span class="identifier">p</span> <span class="special">+</span> <span class="number">10</span><span class="special">)(</span><span class="identifier">Y</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">p</span><span class="special">))</span>
+</pre>
+<p>
+ Gives a good result for a constant Y, and R(p) optimised for low absolute
+ error compared to |Y|.
+ </p>
+<p>
+ For q < 0.5 things get trickier, over the interval <span class="emphasis"><em>0.5 >
+ q > 0.25</em></span> the following approximation works well:
+ </p>
+<pre class="programlisting"><span class="identifier">x</span> <span class="special">=</span> <span class="identifier">sqrt</span><span class="special">(-</span><span class="number">2l</span><span class="identifier">og</span><span class="special">(</span><span class="identifier">q</span><span class="special">))</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">Y</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">q</span><span class="special">))</span>
+</pre>
+<p>
+ While for q < 0.25, let
+ </p>
+<pre class="programlisting"><span class="identifier">z</span> <span class="special">=</span> <span class="identifier">sqrt</span><span class="special">(-</span><span class="identifier">log</span><span class="special">(</span><span class="identifier">q</span><span class="special">))</span>
+</pre>
+<p>
+ Then the result is given by:
+ </p>
+<pre class="programlisting"><span class="identifier">x</span> <span class="special">=</span> <span class="identifier">z</span><span class="special">(</span><span class="identifier">Y</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span> <span class="special">-</span> <span class="identifier">B</span><span class="special">))</span>
+</pre>
+<p>
+ As before Y is a constant and the rational function R is optimised for low
+ absolute error compared to |Y|. B is also a constant: it is the smallest
+ value of <span class="emphasis"><em>z</em></span> for which each approximation is valid. There
+ are several approximations of this form each of which reaches a little further
+ into the tail of the erfc function (at <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> precision the extended exponent
+ range compared to <code class="computeroutput"><span class="keyword">double</span></code> means
+ that the tail goes on for a very long way indeed).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="error_function.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_erf.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../sf_poly.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Gamma Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="next" href="sf_gamma/tgamma.html" title="Gamma">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../special.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sf_gamma/tgamma.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_gamma">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.sf_gamma"></a><a class="link" href="sf_gamma.html" title="Gamma Functions">Gamma Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Gamma</span></dt>
+<dt><span class="section">Log Gamma</span></dt>
+<dt><span class="section">Digamma</span></dt>
+<dt><span class="section">Ratios of Gamma Functions</span></dt>
+<dt><span class="section">Incomplete Gamma Functions</span></dt>
+<dt><span class="section"><a href="sf_gamma/igamma_inv.html">Incomplete Gamma Function
+ Inverses</a></span></dt>
+<dt><span class="section"><a href="sf_gamma/gamma_derivatives.html">Derivative of
+ the Incomplete Gamma Function</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../special.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sf_gamma/tgamma.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/digamma.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/digamma.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,375 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Digamma</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_gamma.html" title="Gamma Functions">
+<link rel="prev" href="lgamma.html" title="Log Gamma">
+<link rel="next" href="gamma_ratios.html" title="Ratios of Gamma Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="lgamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="gamma_ratios.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_gamma_digamma">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_gamma.digamma"></a><a class="link" href="digamma.html" title="Digamma">Digamma</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_gamma.digamma.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.digamma.synopsis"></a></span><a class="link" href="digamma.html#math_toolkit.sf_gamma.digamma.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">digamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">digamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">digamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_gamma.digamma.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.digamma.description"></a></span><a class="link" href="digamma.html#math_toolkit.sf_gamma.digamma.description">Description</a>
+ </h5>
+<p>
+ Returns the digamma or psi function of <span class="emphasis"><em>x</em></span>. Digamma is
+ defined as the logarithmic derivative of the gamma function:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/digamma1.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/digamma.png" align="middle"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ There is no fully generic version of this function: all the implementations
+ are tuned to specific accuracy levels, the most precise of which delivers
+ 34-digits of precision.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../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>
+<h5>
+<a name="math_toolkit.sf_gamma.digamma.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.digamma.accuracy"></a></span><a class="link" href="digamma.html#math_toolkit.sf_gamma.digamma.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon) found on
+ various platforms with various floating point types. Unless otherwise specified
+ any floating point type that is narrower than the one shown will have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively zero error</a>.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Random Positive Values
+ </p>
+ </th>
+<th>
+ <p>
+ Values Near The Positive Root
+ </p>
+ </th>
+<th>
+ <p>
+ Values Near Zero
+ </p>
+ </th>
+<th>
+ <p>
+ Negative Values
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.98 Mean=0.36
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.99 Mean=0.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.95 Mean=0.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=214 Mean=16
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Linux IA32 / GCC
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.4 Mean=0.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.3 Mean=0.45
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.98 Mean=0.35
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=180 Mean=13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Linux IA64 / GCC
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.92 Mean=0.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.3 Mean=0.45
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.98 Mean=0.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=180 Mean=13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.9 Mean=0.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.1 Mean=0.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.99 Mean=0.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=64 Mean=6
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ As shown above, error rates for positive arguments are generally very low.
+ For negative arguments there are an infinite number of irrational roots:
+ relative errors very close to these can be arbitrarily large, although absolute
+ error will remain very low.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.digamma.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.digamma.testing"></a></span><a class="link" href="digamma.html#math_toolkit.sf_gamma.digamma.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of tests: spot values are computed using the online calculator
+ at functions.wolfram.com, while random test values are generated using the
+ high-precision reference implementation (a differentiated <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> see below).
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.digamma.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.digamma.implementation"></a></span><a class="link" href="digamma.html#math_toolkit.sf_gamma.digamma.implementation">Implementation</a>
+ </h5>
+<p>
+ The implementation is divided up into the following domains:
+ </p>
+<p>
+ For Negative arguments the reflection formula:
+ </p>
+<pre class="programlisting"><span class="identifier">digamma</span><span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">digamma</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">pi</span><span class="special">/</span><span class="identifier">tan</span><span class="special">(</span><span class="identifier">pi</span><span class="special">*</span><span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ is used to make <span class="emphasis"><em>x</em></span> positive.
+ </p>
+<p>
+ For arguments in the range [0,1] the recurrence relation:
+ </p>
+<pre class="programlisting"><span class="identifier">digamma</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">digamma</span><span class="special">(</span><span class="identifier">x</span><span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="special">-</span> <span class="number">1</span><span class="special">/</span><span class="identifier">x</span>
+</pre>
+<p>
+ is used to shift the evaluation to [1,2].
+ </p>
+<p>
+ For arguments in the range [1,2] a rational approximation <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> is used (see below).
+ </p>
+<p>
+ For arguments in the range [2,BIG] the recurrence relation:
+ </p>
+<pre class="programlisting"><span class="identifier">digamma</span><span class="special">(</span><span class="identifier">x</span><span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">digamma</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">+</span> <span class="number">1</span><span class="special">/</span><span class="identifier">x</span><span class="special">;</span>
+</pre>
+<p>
+ is used to shift the evaluation to the range [1,2].
+ </p>
+<p>
+ For arguments > BIG the asymptotic expansion:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/digamma2.png"></span>
+ </p>
+<p>
+ can be used. However, this expansion is divergent after a few terms: exactly
+ how many terms depends on the size of <span class="emphasis"><em>x</em></span>. Therefore the
+ value of <span class="emphasis"><em>BIG</em></span> must be chosen so that the series can be
+ truncated at a term that is too small to have any effect on the result when
+ evaluated at <span class="emphasis"><em>BIG</em></span>. Choosing BIG=10 for up to 80-bit reals,
+ and BIG=20 for 128-bit reals allows the series to truncated after a suitably
+ small number of terms and evaluated as a polynomial in <code class="computeroutput"><span class="number">1</span><span class="special">/(</span><span class="identifier">x</span><span class="special">*</span><span class="identifier">x</span><span class="special">)</span></code>.
+ </p>
+<p>
+ The rational approximation <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> in the range [1,2] is derived as follows.
+ </p>
+<p>
+ First a high precision approximation to digamma was constructed using a 60-term
+ differentiated <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a>,
+ the form used is:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/digamma3.png"></span>
+ </p>
+<p>
+ Where P(x) and Q(x) are the polynomials from the rational form of the Lanczos
+ sum, and P'(x) and Q'(x) are their first derivatives. The Lanzos part of
+ this approximation has a theoretical precision of ~100 decimal digits. However,
+ cancellation in the above sum will reduce that to around <code class="computeroutput"><span class="number">99</span><span class="special">-(</span><span class="number">1</span><span class="special">/</span><span class="identifier">y</span><span class="special">)</span></code> digits
+ if <span class="emphasis"><em>y</em></span> is the result. This approximation was used to calculate
+ the positive root of digamma, and was found to agree with the value used
+ by Cody to 25 digits (See Math. Comp. 27, 123-127 (1973) by Cody, Strecok
+ and Thacher) and with the value used by Morris to 35 digits (See TOMS Algorithm
+ 708).
+ </p>
+<p>
+ Likewise a few spot tests agreed with values calculated using functions.wolfram.com
+ to >40 digits. That's sufficiently precise to insure that the approximation
+ below is accurate to double precision. Achieving 128-bit long double precision
+ requires that the location of the root is known to ~70 digits, and it's not
+ clear whether the value calculated by this method meets that requirement:
+ the difficulty lies in independently verifying the value obtained.
+ </p>
+<p>
+ The rational approximation <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> was optimised for absolute error using the form:
+ </p>
+<pre class="programlisting"><span class="identifier">digamma</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">x</span> <span class="special">-</span> <span class="identifier">X0</span><span class="special">)(</span><span class="identifier">Y</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">x</span> <span class="special">-</span> <span class="number">1</span><span class="special">));</span>
+</pre>
+<p>
+ Where X0 is the positive root of digamma, Y is a constant, and R(x - 1) is
+ the rational approximation. Note that since X0 is irrational, we need twice
+ as many digits in X0 as in x in order to avoid cancellation error during
+ the subtraction (this assumes that <span class="emphasis"><em>x</em></span> is an exact value,
+ if it's not then all bets are off). That means that even when x is the value
+ of the root rounded to the nearest representable value, the result of digamma(x)
+ <span class="emphasis"><em><span class="bold"><strong>will not be zero</strong></span></em></span>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="lgamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="gamma_ratios.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/gamma_derivatives.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/gamma_derivatives.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,97 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Derivative of the Incomplete Gamma Function</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_gamma.html" title="Gamma Functions">
+<link rel="prev" href="igamma_inv.html" title="Incomplete Gamma Function Inverses">
+<link rel="next" href="../factorials.html" title="Factorials and Binomial Coefficients">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="igamma_inv.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../factorials.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_gamma_gamma_derivatives">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_gamma.gamma_derivatives"></a><a class="link" href="gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function">Derivative of
+ the Incomplete Gamma Function</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_gamma.gamma_derivatives.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.gamma_derivatives.synopsis"></a></span><a class="link" href="gamma_derivatives.html#math_toolkit.sf_gamma.gamma_derivatives.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_derivative</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</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"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_derivative</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_gamma.gamma_derivatives.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.gamma_derivatives.description"></a></span><a class="link" href="gamma_derivatives.html#math_toolkit.sf_gamma.gamma_derivatives.description">Description</a>
+ </h5>
+<p>
+ This function find some uses in statistical distributions: it implements
+ the partial derivative with respect to <span class="emphasis"><em>x</em></span> of the incomplete
+ gamma function.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/derivative1.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ Note that the derivative of the function <a class="link" href="igamma.html" title="Incomplete Gamma Functions">gamma_q</a>
+ can be obtained by negating the result of this function.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../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,
+ otherwise the return type is simply T1.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.gamma_derivatives.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.gamma_derivatives.accuracy"></a></span><a class="link" href="gamma_derivatives.html#math_toolkit.sf_gamma.gamma_derivatives.accuracy">Accuracy</a>
+ </h5>
+<p>
+ Almost identical to the incomplete gamma function <a class="link" href="igamma.html" title="Incomplete Gamma Functions">gamma_p</a>:
+ refer to the documentation for that function for more information.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.gamma_derivatives.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.gamma_derivatives.implementation"></a></span><a class="link" href="gamma_derivatives.html#math_toolkit.sf_gamma.gamma_derivatives.implementation">Implementation</a>
+ </h5>
+<p>
+ This function just expose some of the internals of the incomplete gamma function
+ <a class="link" href="igamma.html" title="Incomplete Gamma Functions">gamma_p</a>: refer to the
+ documentation for that function for more information.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="igamma_inv.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../factorials.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/gamma_ratios.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/gamma_ratios.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,345 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Ratios of Gamma Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_gamma.html" title="Gamma Functions">
+<link rel="prev" href="digamma.html" title="Digamma">
+<link rel="next" href="igamma.html" title="Incomplete Gamma Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="digamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="igamma.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_gamma_gamma_ratios">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_gamma.gamma_ratios"></a><a class="link" href="gamma_ratios.html" title="Ratios of Gamma Functions">Ratios of Gamma Functions</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_ratio</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_ratio</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_delta_ratio</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">delta</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">Policy</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_delta_ratio</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">delta</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_gamma.gamma_ratios.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.gamma_ratios.description"></a></span><a class="link" href="gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_ratio</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_ratio</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the ratio of gamma functions:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/gamma_ratio0.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ Internally this just calls <code class="computeroutput"><span class="identifier">tgamma_delta_ratio</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">b</span><span class="special">-</span><span class="identifier">a</span><span class="special">)</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_delta_ratio</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">delta</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_delta_ratio</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">delta</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the ratio of gamma functions:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/gamma_ratio1.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ Note that the result is calculated accurately even when <span class="emphasis"><em>delta</em></span>
+ is small compared to <span class="emphasis"><em>a</em></span>: indeed even if <span class="emphasis"><em>a+delta
+ ~ a</em></span>. The function is typically used when <span class="emphasis"><em>a</em></span>
+ is large and <span class="emphasis"><em>delta</em></span> is very small.
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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,
+ otherwise the result type is simple T1.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/tgamma_delta_ratio.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.gamma_ratios.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.gamma_ratios.accuracy"></a></span><a class="link" href="gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon) found on
+ various platforms with various floating point types. Unless otherwise specified
+ any floating point type that is narrower than the one shown will have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.sf_gamma.gamma_ratios.errors_in_the_function_tgamma_de"></a><p class="title"><b>Table 3.1. Errors In the Function tgamma_delta_ratio(a, delta)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function tgamma_delta_ratio(a, delta)">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 20 < a < 80
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ delta < 1
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=16.9 Mean=1.7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA32, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=24 Mean=2.7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=12.8 Mean=1.8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=21.4 Mean=2.3
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_gamma.gamma_ratios.errors_in_the_function_tgamma_ra"></a><p class="title"><b>Table 3.2. Errors In the Function tgamma_ratio(a, b)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function tgamma_ratio(a, b)">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 6 < a,b < 50
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=34 Mean=9
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA32, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=91 Mean=23
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=35.6 Mean=9.3
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=43.9 Mean=13.2
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.sf_gamma.gamma_ratios.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.gamma_ratios.testing"></a></span><a class="link" href="gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.testing">Testing</a>
+ </h5>
+<p>
+ Accuracy tests use data generated at very high precision (with <a href="http://shoup.net/ntl/doc/RR.txt" target="_top">NTL
+ RR class</a> set at 1000-bit precision: about 300 decimal digits) and
+ a deliberately naive calculation of Γ(x)/Γ(y).
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.gamma_ratios.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.gamma_ratios.implementation"></a></span><a class="link" href="gamma_ratios.html#math_toolkit.sf_gamma.gamma_ratios.implementation">Implementation</a>
+ </h5>
+<p>
+ The implementation of these functions is very similar to that of <a class="link" href="../sf_beta/beta_function.html" title="Beta">beta</a>,
+ and is based on combining similar power terms to improve accuracy and avoid
+ spurious overflow/underflow.
+ </p>
+<p>
+ In addition there are optimisations for the situation where <span class="emphasis"><em>delta</em></span>
+ is a small integer: in which case this function is basically the reciprocal
+ of a rising factorial, or where both arguments are smallish integers: in
+ which case table lookup of factorials can be used to calculate the ratio.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="digamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="igamma.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,1034 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Incomplete Gamma Functions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_gamma.html" title="Gamma Functions">
+<link rel="prev" href="gamma_ratios.html" title="Ratios of Gamma Functions">
+<link rel="next" href="igamma_inv.html" title="Incomplete Gamma Function Inverses">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="gamma_ratios.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="igamma_inv.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_gamma_igamma">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_gamma.igamma"></a><a class="link" href="igamma.html" title="Incomplete Gamma Functions">Incomplete Gamma Functions</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma.synopsis"></a></span><a class="link" href="igamma.html#math_toolkit.sf_gamma.igamma.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_lower</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_lower</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma.description"></a></span><a class="link" href="igamma.html#math_toolkit.sf_gamma.igamma.description">Description</a>
+ </h5>
+<p>
+ There are four <a href="http://mathworld.wolfram.com/IncompleteGammaFunction.html" target="_top">incomplete
+ gamma functions</a>: two are normalised versions (also known as <span class="emphasis"><em>regularized</em></span>
+ incomplete gamma functions) that return values in the range [0, 1], and two
+ are non-normalised and return values in the range [0, Γ(a)]. Users interested
+ in statistical applications should use the <a href="http://mathworld.wolfram.com/RegularizedGammaFunction.html" target="_top">normalised
+ versions (gamma_p and gamma_q)</a>.
+ </p>
+<p>
+ All of these functions require <span class="emphasis"><em>a > 0</em></span> and <span class="emphasis"><em>z
+ >= 0</em></span>, otherwise they return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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,
+ otherwise the return type is simply T1.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">Policy</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the normalised lower incomplete gamma function of a and z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/igamma4.png"></span>
+ </p>
+<p>
+ This function changes rapidly from 0 to 1 around the point z == a:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/gamma_p.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the normalised upper incomplete gamma function of a and z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/igamma3.png"></span>
+ </p>
+<p>
+ This function changes rapidly from 1 to 0 around the point z == a:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/gamma_q.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_lower</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma_lower</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the full (non-normalised) lower incomplete gamma function of a and
+ z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/igamma2.png"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the full (non-normalised) upper incomplete gamma function of a and
+ z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/igamma1.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma.accuracy"></a></span><a class="link" href="igamma.html#math_toolkit.sf_gamma.igamma.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following tables give peak and mean relative errors in over various domains
+ of a and z, along with comparisons to the GSL-1.9
+ and Cephes libraries.
+ Note that only results for the widest floating point type on the system are
+ given as narrower types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<p>
+ Note that errors grow as <span class="emphasis"><em>a</em></span> grows larger.
+ </p>
+<p>
+ Note also that the higher error rates for the 80 and 128 bit long double
+ results are somewhat misleading: expected results that are zero at 64-bit
+ double precision may be non-zero - but exceptionally small - with the larger
+ exponent range of a long double. These results therefore reflect the more
+ extreme nature of the tests conducted for these types.
+ </p>
+<p>
+ All values are in units of epsilon.
+ </p>
+<div class="table">
+<a name="math_toolkit.sf_gamma.igamma.errors_in_the_function_gamma_p_a"></a><p class="title"><b>Table 3.3. Errors In the Function gamma_p(a,z)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function gamma_p(a,z)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 0.5 < a < 100
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0.01*a < z < 100*a
+ </p>
+ </th>
+<th>
+ <p>
+ 1x10<sup>-12</sup> < a < 5x10<sup>-2</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0.01*a < z < 100*a
+ </p>
+ </th>
+<th>
+ <p>
+ 1e-6 < a < 1.7x10<sup>6</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 1 < z < 100*a
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=36 Mean=9.1
+ </p>
+ <p>
+ (GSL Peak=342 Mean=46)
+ </p>
+ <p>
+ (Cephes Peak=491
+ Mean=102)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.5 Mean=1.4
+ </p>
+ <p>
+ (GSL Peak=4.8 Mean=0.76)
+ </p>
+ <p>
+ (Cephes Peak=21
+ Mean=5.6)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=244 Mean=21
+ </p>
+ <p>
+ (GSL Peak=1022 Mean=1054)
+ </p>
+ <p>
+ (Cephes Peak~8x10<sup>6</sup> Mean~7x10<sup>4</sup>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA32, gcc-3.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=241 Mean=36
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.7 Mean=1.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~30,220 Mean=1929
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=41 Mean=10
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.7 Mean=1.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak~30,790 Mean=1864
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=40.2 Mean=10.2
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5 Mean=1.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5,476 Mean=440
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_gamma.igamma.errors_in_the_function_gamma_q_a"></a><p class="title"><b>Table 3.4. Errors In the Function gamma_q(a,z)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function gamma_q(a,z)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 0.5 < a < 100
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0.01*a < z < 100*a
+ </p>
+ </th>
+<th>
+ <p>
+ 1x10<sup>-12</sup> < a < 5x10<sup>-2</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0.01*a < z < 100*a
+ </p>
+ </th>
+<th>
+ <p>
+ 1x10<sup>-6</sup> < a < 1.7x10<sup>6</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 1 < z < 100*a
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=28.3 Mean=7.2
+ </p>
+ <p>
+ (GSL Peak=201 Mean=13)
+ </p>
+ <p>
+ (Cephes Peak=556
+ Mean=97)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.8 Mean=1.6
+ </p>
+ <p>
+ (GSL Peak~1.3x10<sup>10</sup> Mean=1x10<sup>+9</sup>)
+ </p>
+ <p>
+ (Cephes Peak~3x10<sup>11</sup> Mean=4x10<sup>10</sup>)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=469 Mean=33
+ </p>
+ <p>
+ (GSL Peak=27,050 Mean=2159)
+ </p>
+ <p>
+ (Cephes Peak~8x10<sup>6</sup> Mean~7x10<sup>5</sup>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA32, gcc-3.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=280 Mean=33
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.1 Mean=1.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=11,490 Mean=732
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=32 Mean=9.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.7 Mean=1.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6815 Mean=414
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=37 Mean=10
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=11.2 Mean=2.0
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4,999 Mean=298
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_gamma.igamma.errors_in_the_function_tgamma_lo"></a><p class="title"><b>Table 3.5. Errors In the Function tgamma_lower(a,z)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function tgamma_lower(a,z)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 0.5 < a < 100
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0.01*a < z < 100*a
+ </p>
+ </th>
+<th>
+ <p>
+ 1x10<sup>-12</sup> < a < 5x10<sup>-2</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0.01*a < z < 100*a
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5.5 Mean=1.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.6 Mean=0.78
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA32, gcc-3.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=402 Mean=79
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.4 Mean=0.8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6.8 Mean=1.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.4 Mean=0.78
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6.1 Mean=1.8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.7 Mean=0.89
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_gamma.igamma.errors_in_the_function_tgamma_a_"></a><p class="title"><b>Table 3.6. Errors In the Function tgamma(a,z)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function tgamma(a,z)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ 0.5 < a < 100
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0.01*a < z < 100*a
+ </p>
+ </th>
+<th>
+ <p>
+ 1x10<sup>-12</sup> < a < 5x10<sup>-2</sup>
+ </p>
+ <p>
+ and
+ </p>
+ <p>
+ 0.01*a < z < 100*a
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5.9 Mean=1.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.8 Mean=0.6
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA32, gcc-3.3
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=596 Mean=116
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.2 Mean=0.84
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=40.2 Mean=2.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.2 Mean=0.8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=364 Mean=17.6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=12.7 Mean=1.8
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.sf_gamma.igamma.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma.testing"></a></span><a class="link" href="igamma.html#math_toolkit.sf_gamma.igamma.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of tests: spot tests compare values taken from Mathworld's online evaluator
+ with this implementation to perform a basic "sanity check". Accuracy
+ tests use data generated at very high precision (using NTL's RR class set
+ at 1000-bit precision) using this implementation with a very high precision
+ 60-term <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a>,
+ and some but not all of the special case handling disabled. This is less
+ than satisfactory: an independent method should really be used, but apparently
+ a complete lack of such methods are available. We can't even use a deliberately
+ naive implementation without special case handling since Legendre's continued
+ fraction (see below) is unstable for small a and z.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma.implementation"></a></span><a class="link" href="igamma.html#math_toolkit.sf_gamma.igamma.implementation">Implementation</a>
+ </h5>
+<p>
+ These four functions share a common implementation since they are all related
+ via:
+ </p>
+<p>
+ 1) <span class="inlinemediaobject"><img src="../../../equations/igamma5.png"></span>
+ </p>
+<p>
+ 2) <span class="inlinemediaobject"><img src="../../../equations/igamma6.png"></span>
+ </p>
+<p>
+ 3) <span class="inlinemediaobject"><img src="../../../equations/igamma7.png"></span>
+ </p>
+<p>
+ The lower incomplete gamma is computed from its series representation:
+ </p>
+<p>
+ 4) <span class="inlinemediaobject"><img src="../../../equations/igamma8.png"></span>
+ </p>
+<p>
+ Or by subtraction of the upper integral from either Γ(a) or 1 when <span class="emphasis"><em>x
+ - (1</em></span>(3x)) > a and x > 1.1/.
+ </p>
+<p>
+ The upper integral is computed from Legendre's continued fraction representation:
+ </p>
+<p>
+ 5) <span class="inlinemediaobject"><img src="../../../equations/igamma9.png"></span>
+ </p>
+<p>
+ When <span class="emphasis"><em>(x > 1.1)</em></span> or by subtraction of the lower integral
+ from either Γ(a) or 1 when <span class="emphasis"><em>x - (1</em></span>(3x)) < a/.
+ </p>
+<p>
+ For <span class="emphasis"><em>x < 1.1</em></span> computation of the upper integral is
+ more complex as the continued fraction representation is unstable in this
+ area. However there is another series representation for the lower integral:
+ </p>
+<p>
+ 6) <span class="inlinemediaobject"><img src="../../../equations/igamma10.png"></span>
+ </p>
+<p>
+ That lends itself to calculation of the upper integral via rearrangement
+ to:
+ </p>
+<p>
+ 7) <span class="inlinemediaobject"><img src="../../../equations/igamma11.png"></span>
+ </p>
+<p>
+ Refer to the documentation for <a class="link" href="../powers/powm1.html" title="powm1">powm1</a>
+ and <a class="link" href="tgamma.html" title="Gamma">tgamma1pm1</a> for details
+ of their implementation. Note however that the precision of <a class="link" href="tgamma.html" title="Gamma">tgamma1pm1</a>
+ is capped to either around 35 digits, or to that of the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> associated with type T - if there is one - whichever
+ of the two is the greater. That therefore imposes a similar limit on the
+ precision of this function in this region.
+ </p>
+<p>
+ For <span class="emphasis"><em>x < 1.1</em></span> the crossover point where the result
+ is ~0.5 no longer occurs for <span class="emphasis"><em>x ~ y</em></span>. Using <span class="emphasis"><em>x
+ * 0.75 < a</em></span> as the crossover criterion for <span class="emphasis"><em>0.5 <
+ x <= 1.1</em></span> keeps the maximum value computed (whether it's the
+ upper or lower interval) to around 0.75. Likewise for <span class="emphasis"><em>x <= 0.5</em></span>
+ then using <span class="emphasis"><em>-0.4 / log(x) < a</em></span> as the crossover criterion
+ keeps the maximum value computed to around 0.7 (whether it's the upper or
+ lower interval).
+ </p>
+<p>
+ There are two special cases used when a is an integer or half integer, and
+ the crossover conditions listed above indicate that we should compute the
+ upper integral Q. If a is an integer in the range <span class="emphasis"><em>1 <= a <
+ 30</em></span> then the following finite sum is used:
+ </p>
+<p>
+ 9) <span class="inlinemediaobject"><img src="../../../equations/igamma1f.png"></span>
+ </p>
+<p>
+ While for half integers in the range <span class="emphasis"><em>0.5 <= a < 30</em></span>
+ then the following finite sum is used:
+ </p>
+<p>
+ 10) <span class="inlinemediaobject"><img src="../../../equations/igamma2f.png"></span>
+ </p>
+<p>
+ These are both more stable and more efficient than the continued fraction
+ alternative.
+ </p>
+<p>
+ When the argument <span class="emphasis"><em>a</em></span> is large, and <span class="emphasis"><em>x ~ a</em></span>
+ then the series (4) and continued fraction (5) above are very slow to converge.
+ In this area an expansion due to Temme is used:
+ </p>
+<p>
+ 11) <span class="inlinemediaobject"><img src="../../../equations/igamma16.png"></span>
+ </p>
+<p>
+ 12) <span class="inlinemediaobject"><img src="../../../equations/igamma17.png"></span>
+ </p>
+<p>
+ 13) <span class="inlinemediaobject"><img src="../../../equations/igamma18.png"></span>
+ </p>
+<p>
+ 14) <span class="inlinemediaobject"><img src="../../../equations/igamma19.png"></span>
+ </p>
+<p>
+ The double sum is truncated to a fixed number of terms - to give a specific
+ target precision - and evaluated as a polynomial-of-polynomials. There are
+ versions for up to 128-bit long double precision: types requiring greater
+ precision than that do not use these expansions. The coefficients C<sub>k</sub><sup>n</sup> are
+ computed in advance using the recurrence relations given by Temme. The zone
+ where these expansions are used is
+ </p>
+<pre class="programlisting"><span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="number">20</span><span class="special">)</span> <span class="special">&&</span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><</span> <span class="number">200</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">x</span><span class="special">-</span><span class="identifier">a</span><span class="special">)/</span><span class="identifier">a</span> <span class="special"><</span> <span class="number">0.4</span>
+</pre>
+<p>
+ And:
+ </p>
+<pre class="programlisting"><span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="number">200</span><span class="special">)</span> <span class="special">&&</span> <span class="special">(</span><span class="identifier">fabs</span><span class="special">(</span><span class="identifier">x</span><span class="special">-</span><span class="identifier">a</span><span class="special">)/</span><span class="identifier">a</span> <span class="special"><</span> <span class="number">4.5</span><span class="special">/</span><span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span>
+</pre>
+<p>
+ The latter range is valid for all types up to 128-bit long doubles, and is
+ designed to ensure that the result is larger than 10<sup>-6</sup>, the first range is
+ used only for types up to 80-bit long doubles. These domains are narrower
+ than the ones recommended by either Temme or Didonato and Morris. However,
+ using a wider range results in large and inexact (i.e. computed) values being
+ passed to the <code class="computeroutput"><span class="identifier">exp</span></code> and <code class="computeroutput"><span class="identifier">erfc</span></code> functions resulting in significantly
+ larger error rates. In other words there is a fine trade off here between
+ efficiency and error. The current limits should keep the number of terms
+ required by (4) and (5) to no more than ~20 at double precision.
+ </p>
+<p>
+ For the normalised incomplete gamma functions, calculation of the leading
+ power terms is central to the accuracy of the function. For smallish a and
+ x combining the power terms with the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> gives the greatest accuracy:
+ </p>
+<p>
+ 15) <span class="inlinemediaobject"><img src="../../../equations/igamma12.png"></span>
+ </p>
+<p>
+ In the event that this causes underflow/overflow then the exponent can be
+ reduced by a factor of <span class="emphasis"><em>a</em></span> and brought inside the power
+ term.
+ </p>
+<p>
+ When a and x are large, we end up with a very large exponent with a base
+ near one: this will not be computed accurately via the pow function, and
+ taking logs simply leads to cancellation errors. The worst of the errors
+ can be avoided by using:
+ </p>
+<p>
+ 16) <span class="inlinemediaobject"><img src="../../../equations/igamma13.png"></span>
+ </p>
+<p>
+ when <span class="emphasis"><em>a-x</em></span> is small and a and x are large. There is still
+ a subtraction and therefore some cancellation errors - but the terms are
+ small so the absolute error will be small - and it is absolute rather than
+ relative error that counts in the argument to the <span class="emphasis"><em>exp</em></span>
+ function. Note that for sufficiently large a and x the errors will still
+ get you eventually, although this does delay the inevitable much longer than
+ other methods. Use of <span class="emphasis"><em>log(1+x)-x</em></span> here is inspired by
+ Temme (see references below).
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma.h5"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma.references"></a></span><a class="link" href="igamma.html#math_toolkit.sf_gamma.igamma.references">References</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ N. M. Temme, A Set of Algorithms for the Incomplete Gamma Functions,
+ Probability in the Engineering and Informational Sciences, 8, 1994.
+ </li>
+<li class="listitem">
+ N. M. Temme, The Asymptotic Expansion of the Incomplete Gamma Functions,
+ Siam J. Math Anal. Vol 10 No 4, July 1979, p757.
+ </li>
+<li class="listitem">
+ A. R. Didonato and A. H. Morris, Computation of the Incomplete Gamma
+ Function Ratios and their Inverse. ACM TOMS, Vol 12, No 4, Dec 1986,
+ p377.
+ </li>
+<li class="listitem">
+ W. Gautschi, The Incomplete Gamma Functions Since Tricomi, In Tricomi's
+ Ideas and Contemporary Applied Mathematics, Atti dei Convegni Lincei,
+ n. 147, Accademia Nazionale dei Lincei, Roma, 1998, pp. 203--237. http://citeseer.ist.psu.edu/gautschi98incomplete.html
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="gamma_ratios.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="igamma_inv.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/igamma_inv.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/igamma_inv.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,242 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Incomplete Gamma Function Inverses</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_gamma.html" title="Gamma Functions">
+<link rel="prev" href="igamma.html" title="Incomplete Gamma Functions">
+<link rel="next" href="gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="igamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="gamma_derivatives.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_gamma_igamma_inv">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_gamma.igamma_inv"></a><a class="link" href="igamma_inv.html" title="Incomplete Gamma Function Inverses">Incomplete Gamma Function
+ Inverses</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma_inv.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma_inv.synopsis"></a></span><a class="link" href="igamma_inv.html#math_toolkit.sf_gamma.igamma_inv.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma_inv.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma_inv.description"></a></span><a class="link" href="igamma_inv.html#math_toolkit.sf_gamma.igamma_inv.description">Description</a>
+ </h5>
+<p>
+ There are four <a href="http://mathworld.wolfram.com/IncompleteGammaFunction.html" target="_top">incomplete
+ gamma function</a> inverses which either compute <span class="emphasis"><em>x</em></span>
+ given <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>p</em></span> or <span class="emphasis"><em>q</em></span>,
+ or else compute <span class="emphasis"><em>a</em></span> given <span class="emphasis"><em>x</em></span> and either
+ <span class="emphasis"><em>p</em></span> or <span class="emphasis"><em>q</em></span>.
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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,
+ otherwise the return type is simply T1.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ When people normally talk about the inverse of the incomplete gamma function,
+ they are talking about inverting on parameter <span class="emphasis"><em>x</em></span>. These
+ are implemented here as gamma_p_inv and gamma_q_inv, and are by far the
+ most efficient of the inverses presented here.
+ </p>
+<p>
+ The inverse on the <span class="emphasis"><em>a</em></span> parameter finds use in some statistical
+ applications but has to be computed by rather brute force numerical techniques
+ and is consequently several times slower. These are implemented here as
+ gamma_p_inva and gamma_q_inva.
+ </p>
+</td></tr>
+</table></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value x such that: <code class="computeroutput"><span class="identifier">q</span>
+ <span class="special">=</span> <span class="identifier">gamma_q</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">x</span><span class="special">);</span></code>
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>a > 0</em></span> and <span class="emphasis"><em>1 >= p,q >= 0</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_inv</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value x such that: <code class="computeroutput"><span class="identifier">p</span>
+ <span class="special">=</span> <span class="identifier">gamma_p</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">x</span><span class="special">);</span></code>
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>a > 0</em></span> and <span class="emphasis"><em>1 >= p,q >= 0</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_q_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value a such that: <code class="computeroutput"><span class="identifier">q</span>
+ <span class="special">=</span> <span class="identifier">gamma_q</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">x</span><span class="special">);</span></code>
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>x > 0</em></span> and <span class="emphasis"><em>1 >= p,q >= 0</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">gamma_p_inva</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns a value a such that: <code class="computeroutput"><span class="identifier">p</span>
+ <span class="special">=</span> <span class="identifier">gamma_p</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">x</span><span class="special">);</span></code>
+ </p>
+<p>
+ Requires: <span class="emphasis"><em>x > 0</em></span> and <span class="emphasis"><em>1 >= p,q >= 0</em></span>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma_inv.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma_inv.accuracy"></a></span><a class="link" href="igamma_inv.html#math_toolkit.sf_gamma.igamma_inv.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The accuracy of these functions doesn't vary much by platform or by the type
+ T. Given that these functions are computed by iterative methods, they are
+ deliberately "detuned" so as not to be too accurate: it is in any
+ case impossible for these function to be more accurate than the regular forward
+ incomplete gamma functions. In practice, the accuracy of these functions
+ is very similar to that of <a class="link" href="igamma.html" title="Incomplete Gamma Functions">gamma_p</a>
+ and <a class="link" href="igamma.html" title="Incomplete Gamma Functions">gamma_q</a> functions.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma_inv.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma_inv.testing"></a></span><a class="link" href="igamma_inv.html#math_toolkit.sf_gamma.igamma_inv.testing">Testing</a>
+ </h5>
+<p>
+ There are two sets of tests:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Basic sanity checks attempt to "round-trip" from <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>x</em></span> to <span class="emphasis"><em>p</em></span> or <span class="emphasis"><em>q</em></span>
+ and back again. These tests have quite generous tolerances: in general
+ both the incomplete gamma, and its inverses, change so rapidly that round
+ tripping to more than a couple of significant digits isn't possible.
+ This is especially true when <span class="emphasis"><em>p</em></span> or <span class="emphasis"><em>q</em></span>
+ is very near one: in this case there isn't enough "information content"
+ in the input to the inverse function to get back where you started.
+ </li>
+<li class="listitem">
+ Accuracy checks using high precision test values. These measure the accuracy
+ of the result, given exact input values.
+ </li>
+</ul></div>
+<h5>
+<a name="math_toolkit.sf_gamma.igamma_inv.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.igamma_inv.implementation"></a></span><a class="link" href="igamma_inv.html#math_toolkit.sf_gamma.igamma_inv.implementation">Implementation</a>
+ </h5>
+<p>
+ The functions gamma_p_inv and gamma_q_inv
+ share a common implementation.
+ </p>
+<p>
+ First an initial approximation is computed using the methodology described
+ in:
+ </p>
+<p>
+ <a href="http://portal.acm.org/citation.cfm?id=23109&coll=portal&dl=ACM" target="_top">A.
+ R. Didonato and A. H. Morris, Computation of the Incomplete Gamma Function
+ Ratios and their Inverse, ACM Trans. Math. Software 12 (1986), 377-393.</a>
+ </p>
+<p>
+ Finally, the last few bits are cleaned up using Halley iteration, the iteration
+ limit is set to 2/3 of the number of bits in T, which by experiment is sufficient
+ to ensure that the inverses are at least as accurate as the normal incomplete
+ gamma functions. In testing, no more than 3 iterations are required to produce
+ a result as accurate as the forward incomplete gamma function, and in many
+ cases only one iteration is required.
+ </p>
+<p>
+ The functions gamma_p_inva and gamma_q_inva also share a common implementation
+ but are handled separately from gamma_p_inv and gamma_q_inv.
+ </p>
+<p>
+ An initial approximation for <span class="emphasis"><em>a</em></span> is computed very crudely
+ so that <span class="emphasis"><em>gamma_p(a, x) ~ 0.5</em></span>, this value is then used
+ as a starting point for a generic derivative-free root finding algorithm.
+ As a consequence, these two functions are rather more expensive to compute
+ than the gamma_p_inv or gamma_q_inv functions. Even so, the root is usually
+ found in fewer than 10 iterations.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="igamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="gamma_derivatives.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/lgamma.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/lgamma.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,468 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Log Gamma</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_gamma.html" title="Gamma Functions">
+<link rel="prev" href="tgamma.html" title="Gamma">
+<link rel="next" href="digamma.html" title="Digamma">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="tgamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="digamma.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_gamma_lgamma">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_gamma.lgamma"></a><a class="link" href="lgamma.html" title="Log Gamma">Log Gamma</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_gamma.lgamma.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.lgamma.synopsis"></a></span><a class="link" href="lgamma.html#math_toolkit.sf_gamma.lgamma.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">int</span><span class="special">*</span> <span class="identifier">sign</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">int</span><span class="special">*</span> <span class="identifier">sign</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_gamma.lgamma.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.lgamma.description"></a></span><a class="link" href="lgamma.html#math_toolkit.sf_gamma.lgamma.description">Description</a>
+ </h5>
+<p>
+ The lgamma function
+ is defined by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/lgamm1.png"></span>
+ </p>
+<p>
+ The second form of the function takes a pointer to an integer, which if non-null
+ is set on output to the sign of tgamma(z).
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/lgamma.png" align="middle"></span>
+ </p>
+<p>
+ There are effectively two versions of this function internally: a fully generic
+ version that is slow, but reasonably accurate, and a much more efficient
+ approximation that is used where the number of digits in the significand
+ of T correspond to a certain <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a>. In practice, any built-in floating-point type you will
+ encounter has an appropriate <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> defined for it. It is also possible, given enough machine
+ time, to generate further <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a>'s
+ using the program libs/math/tools/lanczos_generator.cpp.
+ </p>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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> if T is an integer type, or type T
+ otherwise.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.lgamma.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.lgamma.accuracy"></a></span><a class="link" href="lgamma.html#math_toolkit.sf_gamma.lgamma.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon) found on
+ various platforms with various floating point types, along with comparisons
+ to the GSL-1.9, GNU C Lib, <a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> and Cephes
+ libraries. Unless otherwise specified any floating point type that is narrower
+ than the one shown will have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<p>
+ Note that while the relative errors near the positive roots of lgamma are
+ very low, the lgamma function has an infinite number of irrational roots
+ for negative arguments: very close to these negative roots only a low absolute
+ error can be guaranteed.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Factorials and Half factorials
+ </p>
+ </th>
+<th>
+ <p>
+ Values Near Zero
+ </p>
+ </th>
+<th>
+ <p>
+ Values Near 1 or 2
+ </p>
+ </th>
+<th>
+ <p>
+ Values Near a Negative Pole
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.88 Mean=0.14
+ </p>
+ <p>
+ (GSL=33) (Cephes=1.5)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.96 Mean=0.46
+ </p>
+ <p>
+ (GSL=5.2) (Cephes=1.1)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.86 Mean=0.46
+ </p>
+ <p>
+ (GSL=1168) (Cephes~500000)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.2 Mean=1.3
+ </p>
+ <p>
+ (GSL=25) (Cephes=1.6)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Linux IA32 / GCC
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.9 Mean=0.43
+ </p>
+ <p>
+ (GNU C Lib
+ Peak=1.7 Mean=0.49)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.4 Mean=0.57
+ </p>
+ <p>
+ (GNU C Lib
+ Peak= 0.96 Mean=0.54)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.86 Mean=0.35
+ </p>
+ <p>
+ (GNU C Lib
+ Peak=0.74 Mean=0.26)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6.0 Mean=1.8
+ </p>
+ <p>
+ (GNU C Lib
+ Peak=3.0 Mean=0.86)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Linux IA64 / GCC
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.99 Mean=0.12
+ </p>
+ <p>
+ (GNU C Lib
+ Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Pek=1.2 Mean=0.6
+ </p>
+ <p>
+ (GNU C Lib
+ Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.86 Mean=0.16
+ </p>
+ <p>
+ (GNU C Lib
+ Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.3 Mean=0.69
+ </p>
+ <p>
+ (GNU C Lib
+ Peak 0)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.96 Mean=0.13
+ </p>
+ <p>
+ (<a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.99 Mean=0.53
+ </p>
+ <p>
+ (<a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.9 Mean=0.4
+ </p>
+ <p>
+ (<a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.0 Mean=0.9
+ </p>
+ <p>
+ (<a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak 0)
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.sf_gamma.lgamma.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.lgamma.testing"></a></span><a class="link" href="lgamma.html#math_toolkit.sf_gamma.lgamma.testing">Testing</a>
+ </h5>
+<p>
+ The main tests for this function involve comparisons against the logs of
+ the factorials which can be independently calculated to very high accuracy.
+ </p>
+<p>
+ Random tests in key problem areas are also used.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.lgamma.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.lgamma.implementation"></a></span><a class="link" href="lgamma.html#math_toolkit.sf_gamma.lgamma.implementation">Implementation</a>
+ </h5>
+<p>
+ The generic version of this function is implemented by combining the series
+ and continued fraction representations for the incomplete gamma function:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/lgamm2.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>l</em></span> is an arbitrary integration limit: choosing
+ <code class="literal">l = max(10, a)</code> seems to work fairly well. For negative
+ <span class="emphasis"><em>z</em></span> the logarithm version of the reflection formula is
+ used:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/lgamm3.png"></span>
+ </p>
+<p>
+ For types of known precision, the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> is used, a traits class <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lanczos</span><span class="special">::</span><span class="identifier">lanczos_traits</span></code>
+ maps type T to an appropriate approximation. The logarithmic version of the
+ <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a> is:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/lgamm4.png"></span>
+ </p>
+<p>
+ Where L<sub>e,g</sub>   is the Lanczos sum, scaled by e<sup>g</sup>.
+ </p>
+<p>
+ As before the reflection formula is used for <span class="emphasis"><em>z < 0</em></span>.
+ </p>
+<p>
+ When z is very near 1 or 2, then the logarithmic version of the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> suffers very badly from cancellation error: indeed for
+ values sufficiently close to 1 or 2, arbitrarily large relative errors can
+ be obtained (even though the absolute error is tiny).
+ </p>
+<p>
+ For types with up to 113 bits of precision (up to and including 128-bit long
+ doubles), root-preserving rational approximations <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> are used over the intervals [1,2] and [2,3]. Over the interval
+ [2,3] the approximation form used is:
+ </p>
+<pre class="programlisting"><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">z</span><span class="special">-</span><span class="number">2</span><span class="special">)(</span><span class="identifier">z</span><span class="special">+</span><span class="number">1</span><span class="special">)(</span><span class="identifier">Y</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span><span class="special">-</span><span class="number">2</span><span class="special">));</span>
+</pre>
+<p>
+ Where Y is a constant, and R(z-2) is the rational approximation: optimised
+ so that it's absolute error is tiny compared to Y. In addition small values
+ of z greater than 3 can handled by argument reduction using the recurrence
+ relation:
+ </p>
+<pre class="programlisting"><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ Over the interval [1,2] two approximations have to be used, one for small
+ z uses:
+ </p>
+<pre class="programlisting"><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">z</span><span class="special">-</span><span class="number">1</span><span class="special">)(</span><span class="identifier">z</span><span class="special">-</span><span class="number">2</span><span class="special">)(</span><span class="identifier">Y</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span><span class="special">-</span><span class="number">1</span><span class="special">));</span>
+</pre>
+<p>
+ Once again Y is a constant, and R(z-1) is optimised for low absolute error
+ compared to Y. For z > 1.5 the above form wouldn't converge to a minimax
+ solution but this similar form does:
+ </p>
+<pre class="programlisting"><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="special">(</span><span class="number">2</span><span class="special">-</span><span class="identifier">z</span><span class="special">)(</span><span class="number">1</span><span class="special">-</span><span class="identifier">z</span><span class="special">)(</span><span class="identifier">Y</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="number">2</span><span class="special">-</span><span class="identifier">z</span><span class="special">));</span>
+</pre>
+<p>
+ Finally for z < 1 the recurrence relation can be used to move to z >
+ 1:
+ </p>
+<pre class="programlisting"><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ Note that while this involves a subtraction, it appears not to suffer from
+ cancellation error: as z decreases from 1 the <code class="computeroutput"><span class="special">-</span><span class="identifier">log</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span></code> term grows positive much more rapidly than
+ the <code class="computeroutput"><span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">z</span><span class="special">+</span><span class="number">1</span><span class="special">)</span></code> term becomes negative. So in this specific
+ case, significant digits are preserved, rather than cancelled.
+ </p>
+<p>
+ For other types which do have a <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> defined for them the current solution is as follows:
+ imagine we balance the two terms in the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> by dividing the power term by its value at <span class="emphasis"><em>z
+ = 1</em></span>, and then multiplying the Lanczos coefficients by the same
+ value. Now each term will take the value 1 at <span class="emphasis"><em>z = 1</em></span>
+ and we can rearrange the power terms in terms of log1p. Likewise if we subtract
+ 1 from the Lanczos sum part (algebraically, by subtracting the value of each
+ term at <span class="emphasis"><em>z = 1</em></span>), we obtain a new summation that can be
+ also be fed into log1p. Crucially, all of the terms tend to zero, as <span class="emphasis"><em>z
+ -> 1</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/lgamm5.png"></span>
+ </p>
+<p>
+ The C<sub>k</sub>   terms in the above are the same as in the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a>.
+ </p>
+<p>
+ A similar rearrangement can be performed at <span class="emphasis"><em>z = 2</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/lgamm6.png"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="tgamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="digamma.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/tgamma.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_gamma/tgamma.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,461 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Gamma</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_gamma.html" title="Gamma Functions">
+<link rel="prev" href="../sf_gamma.html" title="Gamma Functions">
+<link rel="next" href="lgamma.html" title="Log Gamma">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../sf_gamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="lgamma.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_gamma_tgamma">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_gamma.tgamma"></a><a class="link" href="tgamma.html" title="Gamma">Gamma</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_gamma.tgamma.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.tgamma.synopsis"></a></span><a class="link" href="tgamma.html#math_toolkit.sf_gamma.tgamma.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma1pm1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">dz</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma1pm1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">dz</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_gamma.tgamma.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.tgamma.description"></a></span><a class="link" href="tgamma.html#math_toolkit.sf_gamma.tgamma.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the "true gamma" (hence name tgamma) of value z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/gamm1.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/tgamma.png" align="middle"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ There are effectively two versions of the tgamma
+ function internally: a fully generic version that is slow, but reasonably
+ accurate, and a much more efficient approximation that is used where the
+ number of digits in the significand of T correspond to a certain <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a>. In practice any built in floating point type you will
+ encounter has an appropriate <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> defined for it. It is also possible, given enough machine
+ time, to generate further <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a>'s
+ using the program libs/math/tools/lanczos_generator.cpp.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../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 <code class="computeroutput"><span class="keyword">double</span></code>
+ when T is an integer type, and T otherwise.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma1pm1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">dz</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">tgamma1pm1</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">dz</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">dz</span> <span class="special">+</span> <span class="number">1</span><span class="special">)</span> <span class="special">-</span> <span class="number">1</span></code>.
+ Internally the implementation does not make use of the addition and subtraction
+ implied by the definition, leading to accurate results even for very small
+ <code class="computeroutput"><span class="identifier">dz</span></code>. However, the implementation
+ is capped to either 35 digit accuracy, or to the precision of the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> associated with type T, whichever is more accurate.
+ </p>
+<p>
+ The return type of this function is computed using the <a class="link" href="../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 <code class="computeroutput"><span class="keyword">double</span></code>
+ when T is an integer type, and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.tgamma.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.tgamma.accuracy"></a></span><a class="link" href="tgamma.html#math_toolkit.sf_gamma.tgamma.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon) found on
+ various platforms with various floating point types, along with comparisons
+ to the GSL-1.9, GNU C Lib, <a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> and Cephes
+ libraries. Unless otherwise specified any floating point type that is narrower
+ than the one shown will have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Factorials and Half factorials
+ </p>
+ </th>
+<th>
+ <p>
+ Values Near Zero
+ </p>
+ </th>
+<th>
+ <p>
+ Values Near 1 or 2
+ </p>
+ </th>
+<th>
+ <p>
+ Values Near a Negative Pole
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32 Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.9 Mean=0.7
+ </p>
+ <p>
+ (GSL=3.9)
+ </p>
+ <p>
+ (Cephes=3.0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.0 Mean=1.1
+ </p>
+ <p>
+ (GSL=4.5)
+ </p>
+ <p>
+ (Cephes=1)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.0 Mean=1.1
+ </p>
+ <p>
+ (GSL=7.9)
+ </p>
+ <p>
+ (Cephes=1.0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.6 Mean=1.3
+ </p>
+ <p>
+ (GSL=2.5)
+ </p>
+ <p>
+ (Cephes=2.7)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Linux IA32 / GCC
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=300 Mean=49.5
+ </p>
+ <p>
+ (GNU C Lib
+ Peak=395 Mean=89)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.0 Mean=1.4
+ </p>
+ <p>
+ (GNU C Lib
+ Peak=11 Mean=3.3)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5.0 Mean=1.8
+ </p>
+ <p>
+ (GNU C Lib
+ Peak=0.92 Mean=0.2)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=157 Mean=65
+ </p>
+ <p>
+ (GNU C Lib
+ Peak=205 Mean=108)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Linux IA64 / GCC
+ </p>
+ </td>
+<td>
+ <p>
+ GNU C Lib
+ Peak 2.8 Mean=0.9
+ </p>
+ <p>
+ (GNU C Lib
+ Peak 0.7)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.8 Mean=1.5
+ </p>
+ <p>
+ (GNU C Lib
+ Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.8 Mean=1.5
+ </p>
+ <p>
+ (GNU C Lib
+ Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5.0 Mean=1.7 (<a href="http://www.gnu.org/software/libc/" target="_top">GNU
+ C Lib</a> Peak 0)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2.5 Mean=1.1
+ </p>
+ <p>
+ (<a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.5 Mean=1.7
+ </p>
+ <p>
+ (<a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3.5 Mean=1.6
+ </p>
+ <p>
+ (<a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak 0)
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=5.2 Mean=1.92
+ </p>
+ <p>
+ (<a href="http://docs.hp.com/en/B9106-90010/index.html" target="_top">HP-UX
+ C Library</a> Peak 0)
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="math_toolkit.sf_gamma.tgamma.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.tgamma.testing"></a></span><a class="link" href="tgamma.html#math_toolkit.sf_gamma.tgamma.testing">Testing</a>
+ </h5>
+<p>
+ The gamma is relatively easy to test: factorials and half-integer factorials
+ can be calculated exactly by other means and compared with the gamma function.
+ In addition, some accuracy tests in known tricky areas were computed at high
+ precision using the generic version of this function.
+ </p>
+<p>
+ The function <code class="computeroutput"><span class="identifier">tgamma1pm1</span></code> is
+ tested against values calculated very naively using the formula <code class="computeroutput"><span class="identifier">tgamma</span><span class="special">(</span><span class="number">1</span><span class="special">+</span><span class="identifier">dz</span><span class="special">)-</span><span class="number">1</span></code> with a
+ lanczos approximation accurate to around 100 decimal digits.
+ </p>
+<h5>
+<a name="math_toolkit.sf_gamma.tgamma.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_gamma.tgamma.implementation"></a></span><a class="link" href="tgamma.html#math_toolkit.sf_gamma.tgamma.implementation">Implementation</a>
+ </h5>
+<p>
+ The generic version of the <code class="computeroutput"><span class="identifier">tgamma</span></code>
+ function is implemented by combining the series and continued fraction representations
+ for the incomplete gamma function:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/gamm2.png"></span>
+ </p>
+<p>
+ where <span class="emphasis"><em>l</em></span> is an arbitrary integration limit: choosing
+ <code class="literal">l = max(10, a)</code> seems to work fairly well.
+ </p>
+<p>
+ For types of known precision the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
+ approximation</a> is used, a traits class <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lanczos</span><span class="special">::</span><span class="identifier">lanczos_traits</span></code>
+ maps type T to an appropriate approximation.
+ </p>
+<p>
+ For z in the range -20 < z < 1 then recursion is used to shift to z
+ > 1 via:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/gamm3.png"></span>
+ </p>
+<p>
+ For very small z, this helps to preserve the identity:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/gamm4.png"></span>
+ </p>
+<p>
+ For z < -20 the reflection formula:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/gamm5.png"></span>
+ </p>
+<p>
+ is used. Particular care has to be taken to evaluate the <code class="computeroutput"><span class="identifier">z</span>
+ <span class="special">*</span> <span class="identifier">sin</span><span class="special">([</span><span class="identifier">pi</span><span class="special">][</span><span class="identifier">space</span><span class="special">]</span> <span class="special">*</span> <span class="identifier">z</span><span class="special">)</span></code>
+ part: a special routine is used to reduce z prior to multiplying by π   to ensure
+ that the result in is the range [0, π/2]. Without this an excessive amount
+ of error occurs in this region (which is hard enough already, as the rate
+ of change near a negative pole is <span class="emphasis"><em>exceptionally</em></span> high).
+ </p>
+<p>
+ Finally if the argument is a small integer then table lookup of the factorial
+ is used.
+ </p>
+<p>
+ The function <code class="computeroutput"><span class="identifier">tgamma1pm1</span></code> is
+ implemented using rational approximations <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> in the region <code class="computeroutput"><span class="special">-</span><span class="number">0.5</span> <span class="special"><</span> <span class="identifier">dz</span>
+ <span class="special"><</span> <span class="number">2</span></code>.
+ These are the same approximations (and internal routines) that are used for
+ <a class="link" href="lgamma.html" title="Log Gamma">lgamma</a>, and so aren't
+ detailed further here. The result of the approximation is <code class="computeroutput"><span class="identifier">log</span><span class="special">(</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">dz</span><span class="special">+</span><span class="number">1</span><span class="special">))</span></code> which can
+ fed into <a class="link" href="../powers/expm1.html" title="expm1">expm1</a> to give the
+ desired result. Outside the range <code class="computeroutput"><span class="special">-</span><span class="number">0.5</span> <span class="special"><</span> <span class="identifier">dz</span>
+ <span class="special"><</span> <span class="number">2</span></code>
+ then the naive formula <code class="computeroutput"><span class="identifier">tgamma1pm1</span><span class="special">(</span><span class="identifier">dz</span><span class="special">)</span>
+ <span class="special">=</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">dz</span><span class="special">+</span><span class="number">1</span><span class="special">)-</span><span class="number">1</span></code>
+ can be used directly.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../sf_gamma.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_gamma.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="lgamma.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_implementation.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_implementation.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,838 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Additional Implementation Notes</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../backgrounders.html" title="Chapter 15. Backgrounders">
+<link rel="prev" href="../backgrounders.html" title="Chapter 15. Backgrounders">
+<link rel="next" href="relative_error.html" title="Relative Error">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../backgrounders.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="relative_error.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_implementation">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.sf_implementation"></a><a class="link" href="sf_implementation.html" title="Additional Implementation Notes">Additional Implementation
+ Notes</a>
+</h2></div></div></div>
+<p>
+ The majority of the implementation notes are included with the documentation
+ of each function or distribution. The notes here are of a more general nature,
+ and reflect more the general implementation philosophy used.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.implemention_philosophy"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.implemention_philosophy">Implemention
+ philosophy</a>
+ </h5>
+<p>
+ "First be right, then be fast."
+ </p>
+<p>
+ There will always be potential compromises to be made between speed and accuracy.
+ It may be possible to find faster methods, particularly for certain limited
+ ranges of arguments, but for most applications of math functions and distributions,
+ we judge that speed is rarely as important as accuracy.
+ </p>
+<p>
+ So our priority is accuracy.
+ </p>
+<p>
+ To permit evaluation of accuracy of the special functions, production of extremely
+ accurate tables of test values has received considerable effort.
+ </p>
+<p>
+ (It also required much CPU effort - there was some danger of molten plastic
+ dripping from the bottom of JM's laptop, so instead, PAB's Dual-core desktop
+ was kept 50% busy for <span class="bold"><strong>days</strong></span> calculating some
+ tables of test values!)
+ </p>
+<p>
+ For a specific RealType, say float or double, it may be possible to find approximations
+ for some functions that are simpler and thus faster, but less accurate (perhaps
+ because there are no refining iterations, for example, when calculating inverse
+ functions).
+ </p>
+<p>
+ If these prove accurate enough to be "fit for his purpose", then
+ a user may substitute his custom specialization.
+ </p>
+<p>
+ For example, there are approximations dating back from times when computation
+ was a <span class="bold"><strong>lot</strong></span> more expensive:
+ </p>
+<p>
+ H Goldberg and H Levine, Approximate formulas for percentage points and normalisation
+ of t and chi squared, Ann. Math. Stat., 17(4), 216 - 225 (Dec 1946).
+ </p>
+<p>
+ A H Carter, Approximations to percentage points of the z-distribution, Biometrika
+ 34(2), 352 - 358 (Dec 1947).
+ </p>
+<p>
+ These could still provide sufficient accuracy for some speed-critical applications.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.accuracy_and_representation_of_t"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.accuracy_and_representation_of_t">Accuracy
+ and Representation of Test Values</a>
+ </h5>
+<p>
+ In order to be accurate enough for as many as possible real types, constant
+ values are given to 50 decimal digits if available (though many sources proved
+ only accurate near to 64-bit double precision). Values are specified as long
+ double types by appending L, unless they are exactly representable, for example
+ integers, or binary fractions like 0.125. This avoids the risk of loss of accuracy
+ converting from double, the default type. Values are used after static_cast<RealType>(1.2345L)
+ to provide the appropriate RealType for spot tests.
+ </p>
+<p>
+ Functions that return constants values, like kurtosis for example, are written
+ as
+ </p>
+<p>
+ <code class="computeroutput"><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>(-</span><span class="number">3</span><span class="special">)</span> <span class="special">/</span>
+ <span class="number">5</span><span class="special">;</span></code>
+ </p>
+<p>
+ to provide the most accurate value that the compiler can compute for the real
+ type. (The denominator is an integer and so will be promoted exactly).
+ </p>
+<p>
+ So tests for one third, <span class="bold"><strong>not</strong></span> exactly representable
+ with radix two floating-point, (should) use, for example:
+ </p>
+<p>
+ <code class="computeroutput"><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>(</span><span class="number">1</span><span class="special">)</span> <span class="special">/</span>
+ <span class="number">3</span><span class="special">;</span></code>
+ </p>
+<p>
+ If a function is very sensitive to changes in input, specifying an inexact
+ value as input (such as 0.1) can throw the result off by a noticeable amount:
+ 0.1f is "wrong" by ~1e-7 for example (because 0.1 has no exact binary
+ representation). That is why exact binary values - halves, quarters, and eighths
+ etc - are used in test code along with the occasional fraction <code class="computeroutput"><span class="identifier">a</span><span class="special">/</span><span class="identifier">b</span></code>
+ with <code class="computeroutput"><span class="identifier">b</span></code> a power of two (in order
+ to ensure that the result is an exactly representable binary value).
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.tolerance_of_tests"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.tolerance_of_tests">Tolerance
+ of Tests</a>
+ </h5>
+<p>
+ The tolerances need to be set to the maximum of:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Some epsilon value.
+ </li>
+<li class="listitem">
+ The accuracy of the data (often only near 64-bit double).
+ </li>
+</ul></div>
+<p>
+ Otherwise when long double has more digits than the test data, then no amount
+ of tweaking an epsilon based tolerance will work.
+ </p>
+<p>
+ A common problem is when tolerances that are suitable for implementations like
+ Microsoft VS.NET where double and long double are the same size: tests fail
+ on other systems where long double is more accurate than double. Check first
+ that the suffix L is present, and then that the tolerance is big enough.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.handling_unsuitable_arguments"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.handling_unsuitable_arguments">Handling
+ Unsuitable Arguments</a>
+ </h5>
+<p>
+ In <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1665.pdf" target="_top">Errors
+ in Mathematical Special Functions</a>, J. Marraffino & M. Paterno it
+ is proposed that signalling a domain error is mandatory when the argument would
+ give an mathematically undefined result.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Guideline 1
+ </li></ul></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ A mathematical function is said to be defined at a point a = (a1, a2, . .
+ .) if the limits as x = (x1, x2, . . .) 'approaches a from all directions
+ agree'. The defined value may be any number, or +infinity, or -infinity.
+ </p></blockquote></div>
+<p>
+ Put crudely, if the function goes to + infinity and then emerges 'round-the-back'
+ with - infinity, it is NOT defined.
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ The library function which approximates a mathematical function shall signal
+ a domain error whenever evaluated with argument values for which the mathematical
+ function is undefined.
+ </p></blockquote></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Guideline 2
+ </li></ul></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ The library function which approximates a mathematical function shall signal
+ a domain error whenever evaluated with argument values for which the mathematical
+ function obtains a non-real value.
+ </p></blockquote></div>
+<p>
+ This implementation is believed to follow these proposals and to assist compatibility
+ with <span class="emphasis"><em>ISO/IEC 9899:1999 Programming languages - C</em></span> and with
+ the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Draft
+ Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph
+ 5</a>. <a class="link" href="error_handling.html" title="Error Handling">See also domain_error</a>.
+ </p>
+<p>
+ See <a class="link" href="pol_ref.html" title="Policy Reference">policy reference</a> for details
+ of the error handling policies that should allow a user to comply with any
+ of these recommendations, as well as other behaviour.
+ </p>
+<p>
+ See <a class="link" href="error_handling.html" title="Error Handling">error handling</a> for a
+ detailed explanation of the mechanism, and <a class="link" href="stat_tut/weg/error_eg.html" title="Error Handling Example">error_handling
+ example</a> and error_handling_example.cpp
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If you enable throw but do NOT have try & catch block, then the program
+ will terminate with an uncaught exception and probably abort. Therefore to
+ get the benefit of helpful error messages, enabling <span class="bold"><strong>all</strong></span>
+ exceptions <span class="bold"><strong>and</strong></span> using try&catch is recommended
+ for all applications. However, for simplicity, this is not done for most
+ examples.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.sf_implementation.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.handling_of_functions_that_are_n"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.handling_of_functions_that_are_n">Handling
+ of Functions that are Not Mathematically defined</a>
+ </h5>
+<p>
+ Functions that are not mathematically defined, like the Cauchy mean, fail to
+ compile by default. A <a class="link" href="pol_ref/assert_undefined.html" title="Mathematically Undefined Function Policies">policy</a>
+ allows control of this.
+ </p>
+<p>
+ If the policy is to permit undefined functions, then calling them throws a
+ domain error, by default. But the error policy can be set to not throw, and
+ to return NaN instead. For example,
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DOMAIN_ERROR_POLICY</span>
+ <span class="identifier">ignore_error</span></code>
+ </p>
+<p>
+ appears before the first Boost include, then if the un-implemented function
+ is called, mean(cauchy<>()) will return std::numeric_limits<T>::quiet_NaN().
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">has_quiet_NaN</span></code> is false (for example, if
+ T is a User-defined type without NaN support), then an exception will always
+ be thrown when a domain error occurs. Catching exceptions is therefore strongly
+ recommended.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.sf_implementation.h5"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.median_of_distributions"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.median_of_distributions">Median of
+ distributions</a>
+ </h5>
+<p>
+ There are many distributions for which we have been unable to find an analytic
+ formula, and this has deterred us from implementing <a href="http://en.wikipedia.org/wiki/Median" target="_top">median
+ functions</a>, the mid-point in a list of values.
+ </p>
+<p>
+ However a useful numerical approximation for distribution <code class="computeroutput"><span class="identifier">dist</span></code>
+ is available as usual as an accessor non-member function median using <code class="computeroutput"><span class="identifier">median</span><span class="special">(</span><span class="identifier">dist</span><span class="special">)</span></code>, that may be evaluated (in the absence of
+ an analytic formula) by calling
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="number">0.5</span><span class="special">)</span></code> (this is the <span class="emphasis"><em>mathematical</em></span>
+ definition of course).
+ </p>
+<p>
+ <a href="http://www.amstat.org/publications/jse/v13n2/vonhippel.html" target="_top">Mean,
+ Median, and Skew, Paul T von Hippel</a>
+ </p>
+<p>
+ <a href="http://documents.wolfram.co.jp/teachersedition/MathematicaBook/24.5.html" target="_top">Descriptive
+ Statistics,</a>
+ </p>
+<p>
+ <a href="http://documents.wolfram.co.jp/v5/Add-onsLinks/StandardPackages/Statistics/DescriptiveStatistics.html" target="_top">and
+ </a>
+ </p>
+<p>
+ <a href="http://documents.wolfram.com/v5/TheMathematicaBook/AdvancedMathematicsInMathematica/NumericalOperationsOnData/3.8.1.html" target="_top">Mathematica
+ Basic Statistics.</a> give more detail, in particular for discrete distributions.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h6"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.handling_of_floating_point_infin"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.handling_of_floating_point_infin">Handling
+ of Floating-Point Infinity</a>
+ </h5>
+<p>
+ Some functions and distributions are well defined with + or - infinity as argument(s),
+ but after some experiments with handling infinite arguments as special cases,
+ we concluded that it was generally more useful to forbid this, and instead
+ to return the result of <a class="link" href="error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ Handling infinity as special cases is additionally complicated because, unlike
+ built-in types on most - but not all - platforms, not all User-Defined Types
+ are specialized to provide <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code> and would return zero rather than any representation
+ of infinity.
+ </p>
+<p>
+ The rationale is that non-finiteness may happen because of error or overflow
+ in the users code, and it will be more helpful for this to be diagnosed promptly
+ rather than just continuing. The code also became much more complicated, more
+ error-prone, much more work to test, and much less readable.
+ </p>
+<p>
+ However in a few cases, for example normal, where we felt it obvious, we have
+ permitted argument(s) to be infinity, provided infinity is implemented for
+ the <code class="computeroutput"><span class="identifier">RealType</span></code> on that implementation,
+ and it is supported and tested by the distribution.
+ </p>
+<p>
+ The range for these distributions is set to infinity if supported by the platform,
+ (by testing <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">has_infinity</span></code>) else the maximum value provided
+ for the <code class="computeroutput"><span class="identifier">RealType</span></code> by Boost.Math.
+ </p>
+<p>
+ Testing for has_infinity is obviously important for arbitrary precision types
+ where infinity makes much less sense than for IEEE754 floating-point.
+ </p>
+<p>
+ So far we have not set <code class="computeroutput"><span class="identifier">support</span><span class="special">()</span></code> function (only range) on the grounds that
+ the PDF is uninteresting/zero for infinities.
+ </p>
+<p>
+ Users who require special handling of infinity (or other specific value) can,
+ of course, always intercept this before calling a distribution or function
+ and return their own choice of value, or other behavior. This will often be
+ simpler than trying to handle the aftermath of the error policy.
+ </p>
+<p>
+ Overflow, underflow, denorm can be handled using <a class="link" href="pol_ref/error_handling_policies.html" title="Error Handling Policies">error
+ handling policies</a>.
+ </p>
+<p>
+ We have also tried to catch boundary cases where the mathematical specification
+ would result in divide by zero or overflow and signalling these similarly.
+ What happens at (and near), poles can be controlled through <a class="link" href="pol_ref/error_handling_policies.html" title="Error Handling Policies">error
+ handling policies</a>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h7"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.scale_shape_and_location"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.scale_shape_and_location">Scale, Shape
+ and Location</a>
+ </h5>
+<p>
+ We considered adding location and scale to the list of functions, for example:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span>
+<span class="keyword">inline</span> <span class="identifier">RealType</span> <span class="identifier">scale</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">triangular_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>&</span> <span class="identifier">dist</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">RealType</span> <span class="identifier">lower</span> <span class="special">=</span> <span class="identifier">dist</span><span class="special">.</span><span class="identifier">lower</span><span class="special">();</span>
+ <span class="identifier">RealType</span> <span class="identifier">mode</span> <span class="special">=</span> <span class="identifier">dist</span><span class="special">.</span><span class="identifier">mode</span><span class="special">();</span>
+ <span class="identifier">RealType</span> <span class="identifier">upper</span> <span class="special">=</span> <span class="identifier">dist</span><span class="special">.</span><span class="identifier">upper</span><span class="special">();</span>
+ <span class="identifier">RealType</span> <span class="identifier">result</span><span class="special">;</span> <span class="comment">// of checks.</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="keyword">false</span> <span class="special">==</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">check_triangular</span><span class="special">(</span><span class="identifier">BOOST_CURRENT_FUNCTION</span><span class="special">,</span> <span class="identifier">lower</span><span class="special">,</span> <span class="identifier">mode</span><span class="special">,</span> <span class="identifier">upper</span><span class="special">,</span> <span class="special">&</span><span class="identifier">result</span><span class="special">))</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">return</span> <span class="special">(</span><span class="identifier">upper</span> <span class="special">-</span> <span class="identifier">lower</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ but found that these concepts are not defined (or their definition too contentious)
+ for too many distributions to be generally applicable. Because they are non-member
+ functions, they can be added if required.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h8"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.notes_on_implementation_of_speci"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.notes_on_implementation_of_speci">Notes
+ on Implementation of Specific Functions & Distributions</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Default parameters for the Triangular Distribution. We are uncertain about
+ the best default parameters. Some sources suggest that the Standard Triangular
+ Distribution has lower = 0, mode = half and upper = 1. However as a approximation
+ for the normal distribution, the most common usage, lower = -1, mode =
+ 0 and upper = 1 would be more suitable.
+ </li></ul></div>
+<h5>
+<a name="math_toolkit.sf_implementation.h9"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.rational_approximations_used"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">Rational
+ Approximations Used</a>
+ </h5>
+<p>
+ Some of the special functions in this library are implemented via rational
+ approximations. These are either taken from the literature, or devised by John
+ Maddock using <a class="link" href="internals2/minimax.html" title="Minimax Approximations and the Remez Algorithm">our Remez code</a>.
+ </p>
+<p>
+ Rational rather than Polynomial approximations are used to ensure accuracy:
+ polynomial approximations are often wonderful up to a certain level of accuracy,
+ but then quite often fail to provide much greater accuracy no matter how many
+ more terms are added.
+ </p>
+<p>
+ Our own approximations were devised either for added accuracy (to support 128-bit
+ long doubles for example), or because literature methods were unavailable or
+ under non-BSL compatible license. Our Remez code is known to produce good agreement
+ with literature results in fairly simple "toy" cases. All approximations
+ were checked for convergence and to ensure that they were not ill-conditioned
+ (the coefficients can give a theoretically good solution, but the resulting
+ rational function may be un-computable at fixed precision).
+ </p>
+<p>
+ Recomputing using different Remez implementations may well produce differing
+ coefficients: the problem is well known to be ill conditioned in general, and
+ our Remez implementation often found a broad and ill-defined minima for many
+ of these approximations (of course for simple "toy" examples like
+ approximating <code class="computeroutput"><span class="identifier">exp</span></code> the minima
+ is well defined, and the coeffiecents should agree no matter whose Remez implementation
+ is used). This should not in general effect the validity of the approximations:
+ there's good literature supporting the idea that coefficients can be "in
+ error" without necessarily adversely effecting the result. Note that "in
+ error" has a special meaning in this context, see <a href="http://front.math.ucdavis.edu/0101.5042" target="_top">"Approximate
+ construction of rational approximations and the effect of error autocorrection.",
+ Grigori Litvinov, eprint arXiv:math/0101042</a>. Therefore the coefficients
+ still need to be accurately calculated, even if they can be in error compared
+ to the "true" minimax solution.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h10"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.representation_of_mathematical_c"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.representation_of_mathematical_c">Representation
+ of Mathematical Constants</a>
+ </h5>
+<p>
+ A macro BOOST_DEFINE_MATH_CONSTANT in constants.hpp is used to provide high
+ accuracy constants to mathematical functions and distributions, since it is
+ important to provide values uniformly for both built-in float, double and long
+ double types, and for User Defined types in Boost.Multiprecision
+ like cpp_dec_float.
+ and others like NTL::quad_float and NTL::RR.
+ </p>
+<p>
+ To permit calculations in this Math ToolKit and its tests, (and elsewhere)
+ at about 100 decimal digits with NTL::RR type, it is obviously necessary to
+ define constants to this accuracy.
+ </p>
+<p>
+ However, some compilers do not accept decimal digits strings as long as this.
+ So the constant is split into two parts, with the 1st containing at least long
+ double precision, and the 2nd zero if not needed or known. The 3rd part permits
+ an exponent to be provided if necessary (use zero if none) - the other two
+ parameters may only contain decimal digits (and sign and decimal point), and
+ may NOT include an exponent like 1.234E99 (nor a trailing F or L). The second
+ digit string is only used if T is a User-Defined Type, when the constant is
+ converted to a long string literal and lexical_casted to type T. (This is necessary
+ because you can't use a numeric constant since even a long double might not
+ have enough digits).
+ </p>
+<p>
+ For example, pi is defined:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_DEFINE_MATH_CONSTANT</span><span class="special">(</span><span class="identifier">pi</span><span class="special">,</span>
+ <span class="number">3.141592653589793238462643383279502884197169399375105820974944</span><span class="special">,</span>
+ <span class="number">5923078164062862089986280348253421170679821480865132823066470938446095505</span><span class="special">,</span>
+ <span class="number">0</span><span class="special">)</span>
+</pre>
+<p>
+ And used thus:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">;</span>
+
+<span class="keyword">double</span> <span class="identifier">diameter</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">radius</span> <span class="special">=</span> <span class="identifier">diameter</span> <span class="special">*</span> <span class="identifier">pi</span><span class="special"><</span><span class="keyword">double</span><span class="special">>();</span>
+
+<span class="keyword">or</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><</span><span class="identifier">NTL</span><span class="special">::</span><span class="identifier">RR</span><span class="special">>()</span>
+</pre>
+<p>
+ Note that it is necessary (if inconvenient) to specify the type explicitly.
+ </p>
+<p>
+ So you cannot write
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><>();</span> <span class="comment">// could not deduce template argument for 'T'</span>
+</pre>
+<p>
+ Neither can you write:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">;</span> <span class="comment">// Context does not allow for disambiguation of overloaded function</span>
+<span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">();</span> <span class="comment">// Context does not allow for disambiguation of overloaded function</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_implementation.h11"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.thread_safety"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.thread_safety">Thread
+ safety</a>
+ </h5>
+<p>
+ Reporting of error by setting <code class="computeroutput"><span class="identifier">errno</span></code>
+ should be thread-safe already (otherwise none of the std lib math functions
+ would be thread safe?). If you turn on reporting of errors via exceptions,
+ <code class="computeroutput"><span class="identifier">errno</span></code> gets left unused anyway.
+ </p>
+<p>
+ For normal C++ usage, the Boost.Math <code class="computeroutput"><span class="keyword">static</span>
+ <span class="keyword">const</span></code> constants are now thread-safe
+ so for built-in real-number 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> are all thread safe.
+ </p>
+<p>
+ For User_defined types, for example, cpp_dec_float,
+ the Boost.Math should also be thread-safe, (thought we are unsure how to rigorously
+ prove this).
+ </p>
+<p>
+ (Thread safety has received attention in the C++11 Standard revision, so hopefully
+ all compilers will do the right thing here at some point.)
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h12"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.sources_of_test_data"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.sources_of_test_data">Sources
+ of Test Data</a>
+ </h5>
+<p>
+ We found a large number of sources of test data. We have assumed that these
+ are <span class="emphasis"><em>"known good"</em></span> if they agree with the results
+ from our test and only consulted other sources for their <span class="emphasis"><em>'vote'</em></span>
+ in the case of serious disagreement. The accuracy, actual and claimed, vary
+ very widely. Only <a href="http://functions.wolfram.com/" target="_top">Wolfram Mathematica
+ functions</a> provided a higher accuracy than C++ double (64-bit floating-point)
+ and was regarded as the most-trusted source by far. The <a href="http://www.r-project.org/" target="_top">The
+ R Project for Statistical Computing</a> provided the widest range of distributions,
+ but the usual Intel X86 distribution uses 64-but doubles, so our use was limited
+ to the 15 to 17 decimal digit accuracy.
+ </p>
+<p>
+ A useful index of sources is: <a href="http://www.sal.hut.fi/Teaching/Resources/ProbStat/table.html" target="_top">Web-oriented
+ Teaching Resources in Probability and Statistics</a>
+ </p>
+<p>
+ Statlet:
+ Is a Javascript application that calculates and plots probability distributions,
+ and provides the most complete range of distributions:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ Bernoulli, Binomial, discrete uniform, geometric, hypergeometric, negative
+ binomial, Poisson, beta, Cauchy-Lorentz, chi-sequared, Erlang, exponential,
+ extreme value, Fisher, gamma, Laplace, logistic, lognormal, normal, Parteo,
+ Student's t, triangular, uniform, and Weibull.
+ </p></blockquote></div>
+<p>
+ It calculates pdf, cdf, survivor, log survivor, hazard, tail areas, & critical
+ values for 5 tail values.
+ </p>
+<p>
+ It is also the only independent source found for the Weibull distribution;
+ unfortunately it appears to suffer from very poor accuracy in areas where the
+ underlying special function is known to be difficult to implement.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h13"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.testing_for_invalid_parameters_t"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.testing_for_invalid_parameters_t">Testing
+ for Invalid Parameters to Functions and Constructors</a>
+ </h5>
+<p>
+ After finding that some 'bad' parameters (like NaN) were not throwing a <code class="computeroutput"><span class="identifier">domain_error</span></code> exception as they should, a
+ function
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">check_out_of_range</span></code> (in <code class="computeroutput"><span class="identifier">test_out_of_range</span><span class="special">.</span><span class="identifier">hpp</span></code>) was devised by JM to check (using Boost.Test's
+ BOOST_CHECK_THROW macro) that bad parameters passed to constructors and functions
+ throw <code class="computeroutput"><span class="identifier">domain_error</span></code> exceptions.
+ </p>
+<p>
+ Usage is <code class="computeroutput"><span class="identifier">check_out_of_range</span><span class="special"><</span> <span class="identifier">DistributionType</span>
+ <span class="special">>(</span><span class="identifier">list</span><span class="special">-</span><span class="identifier">of</span><span class="special">-</span><span class="identifier">params</span><span class="special">);</span></code>
+ Where list-of-params is a list of <span class="bold"><strong>valid</strong></span> parameters
+ from which the distribution can be constructed - ie the same number of args
+ are passed to the function, as are passed to the distribution constructor.
+ </p>
+<p>
+ The values of the parameters are not important, but must be <span class="bold"><strong>valid</strong></span>
+ to pass the contructor checks; the default values are suitable, but must be
+ explicitly provided, for example:
+ </p>
+<pre class="programlisting"><span class="identifier">check_out_of_range</span><span class="special"><</span><span class="identifier">extreme_value_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">></span> <span class="special">>(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span>
+</pre>
+<p>
+ Checks made are:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Infinity or NaN (if available) passed in place of each of the valid params.
+ </li>
+<li class="listitem">
+ Infinity or NaN (if available) as a random variable.
+ </li>
+<li class="listitem">
+ Out-of-range random variable passed to pdf and cdf (ie outside of "range(DistributionType)").
+ </li>
+<li class="listitem">
+ Out-of-range probability passed to quantile function and complement.
+ </li>
+</ul></div>
+<p>
+ but does <span class="bold"><strong>not</strong></span> check finite but out-of-range
+ parameters to the constructor because these are specific to each distribution,
+ for example:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_CHECK_THROW</span><span class="special">(</span><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">pareto_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>(</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">),</span> <span class="number">0</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">);</span>
+<span class="identifier">BOOST_CHECK_THROW</span><span class="special">(</span><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">pareto_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>(</span><span class="number">1</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="number">0</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">);</span>
+</pre>
+<p>
+ checks <code class="computeroutput"><span class="identifier">scale</span></code> and <code class="computeroutput"><span class="identifier">shape</span></code> parameters are both > 0 by checking
+ that <code class="computeroutput"><span class="identifier">domain_error</span></code> exception
+ is thrown if either are == 0.
+ </p>
+<p>
+ (Use of <code class="computeroutput"><span class="identifier">check_out_of_range</span></code>
+ function may mean that some previous tests are now redundant).
+ </p>
+<p>
+ It was also noted that if more than one parameter is bad, then only the first
+ detected will be reported by the error message.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h14"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.creating_and_managing_the_equati"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.creating_and_managing_the_equati">Creating
+ and Managing the Equations</a>
+ </h5>
+<p>
+ Equations that fit on a single line can most easily be produced by inline Quickbook
+ code using templates for Unicode Greek and Unicode Math symbols. All Greek
+ letter and small set of Math symbols is available at /boost-path/libs/math/doc/sf_and_dist/html4_symbols.qbk
+ </p>
+<p>
+ Where equations need to use more than one line, real Math editors were used.
+ </p>
+<p>
+ The primary source for the equations is now MathML:
+ see the *.mml files in libs/math/doc/sf_and_dist/equations/.
+ </p>
+<p>
+ These are most easily edited by a GUI editor such as Mathcast,
+ please note that the equation editor supplied with Open Office currently mangles
+ these files and should not currently be used.
+ </p>
+<p>
+ Conversion to SVG was achieved using SVGMath
+ and a command line such as:
+ </p>
+<pre class="programlisting">$for file in *.mml; do
+>/cygdrive/c/Python25/python.exe 'C:\download\open\SVGMath-0.3.1\math2svg.py' \
+>>$file > $(basename $file .mml).svg
+>done
+</pre>
+<p>
+ See also the section on "Using Python to run Inkscape" and "Using
+ inkscape to convert scalable vector SVG files to Portable Network graphic PNG".
+ </p>
+<p>
+ Note that SVGMath requires that the mml files are <span class="bold"><strong>not</strong></span>
+ wrapped in an XHTML XML wrapper - this is added by Mathcast by default - one
+ workaround is to copy an existing mml file and then edit it with Mathcast:
+ the existing format should then be preserved. This is a bug in the XML parser
+ used by SVGMath which the author is aware of.
+ </p>
+<p>
+ If neccessary the XHTML wrapper can be removed with:
+ </p>
+<pre class="programlisting">cat filename | tr -d "\r\n" | sed -e 's/.*\(<math[^>]*>.*</math>\).*/\1/' > newfile</pre>
+<p>
+ Setting up fonts for SVGMath is currently rather tricky, on a Windows XP system
+ JM's font setup is the same as the sample config file provided with SVGMath
+ but with:
+ </p>
+<pre class="programlisting"> <!-- Double-struck -->
+ <mathvariant name="double-struck" family="Mathematica7, Lucida Sans Unicode"/>
+</pre>
+<p>
+ changed to:
+ </p>
+<pre class="programlisting"> <!-- Double-struck -->
+ <mathvariant name="double-struck" family="Lucida Sans Unicode"/>
+</pre>
+<p>
+ Note that unlike the sample config file supplied with SVGMath, this does not
+ make use of the <a href="http://support.wolfram.com/technotes/fonts/windows/latestfonts.html" target="_top">Mathematica
+ 7 font</a> as this lacks sufficient Unicode information for it to be used
+ with either SVGMath or XEP "as is".
+ </p>
+<p>
+ Also note that the SVG files in the repository are almost certainly Windows-specific
+ since they reference various Windows Fonts.
+ </p>
+<p>
+ PNG files can be created from the SVGs using Batik
+ and a command such as:
+ </p>
+<pre class="programlisting">java -jar 'C:\download\open\batik-1.7\batik-rasterizer.jar' -dpi 120 *.svg</pre>
+<p>
+ Or using Inkscape (File, Export bitmap, Drawing tab, bitmap size (default size,
+ 100 dpi), Filename (default). png)
+ </p>
+<p>
+ or Using Cygwin, a command such as:
+ </p>
+<pre class="programlisting">for file in *.svg; do
+ /cygdrive/c/progra~1/Inkscape/inkscape -d 120 -e $(cygpath -a -w $(basename $file .svg).png) $(cygpath -a -w $file);
+done</pre>
+<p>
+ Currently Inkscape seems to generate the better looking png's.
+ </p>
+<p>
+ The PDF is generated into \pdf\math.pdf using a command from a shell or command
+ window with current directory \math_toolkit\libs\math\doc\sf_and_dist, typically:
+ </p>
+<pre class="programlisting">bjam -a pdf >math_pdf.log</pre>
+<p>
+ Note that XEP will have to be configured to <span class="bold"><strong>use and embed</strong></span>
+ whatever fonts are used by the SVG equations (almost certainly editing the
+ sample xep.xml provided by the XEP installation). If you fail to do this you
+ will get XEP warnings in the log file like
+ </p>
+<pre class="programlisting">[warning]could not find any font family matching "Times New Roman"; replaced by Helvetica</pre>
+<p>
+ (html is the default so it is generated at libs\math\doc\html\index.html using
+ command line >bjam -a > math_toolkit.docs.log).
+ </p>
+<pre class="programlisting"><span class="special"><!--</span> <span class="identifier">Sample</span> <span class="identifier">configuration</span> <span class="keyword">for</span> <span class="identifier">Windows</span> <span class="identifier">TrueType</span> <span class="identifier">fonts</span><span class="special">.</span> <span class="special">--></span>
+</pre>
+<p>
+ is provided in the xep.xml downloaded, but the Windows TrueType fonts are commented
+ out.
+ </p>
+<p>
+ JM's XEP config file \xep\xep.xml has the following font configuration section
+ added:
+ </p>
+<pre class="programlisting"> <font-group xml:base="file:/C:/Windows/Fonts/" label="Windows TrueType" embed="true" subset="true">
+ <font-family name="Arial">
+ <font><font-data ttf="arial.ttf"/></font>
+ <font style="oblique"><font-data ttf="ariali.ttf"/></font>
+ <font weight="bold"><font-data ttf="arialbd.ttf"/></font>
+ <font weight="bold" style="oblique"><font-data ttf="arialbi.ttf"/></font>
+ </font-family>
+
+ <font-family name="Times New Roman" ligatures="&#xFB01; &#xFB02;">
+ <font><font-data ttf="times.ttf"/></font>
+ <font style="italic"><font-data ttf="timesi.ttf"/></font>
+ <font weight="bold"><font-data ttf="timesbd.ttf"/></font>
+ <font weight="bold" style="italic"><font-data ttf="timesbi.ttf"/></font>
+ </font-family>
+
+ <font-family name="Courier New">
+ <font><font-data ttf="cour.ttf"/></font>
+ <font style="oblique"><font-data ttf="couri.ttf"/></font>
+ <font weight="bold"><font-data ttf="courbd.ttf"/></font>
+ <font weight="bold" style="oblique"><font-data ttf="courbi.ttf"/></font>
+ </font-family>
+
+ <font-family name="Tahoma" embed="true">
+ <font><font-data ttf="tahoma.ttf"/></font>
+ <font weight="bold"><font-data ttf="tahomabd.ttf"/></font>
+ </font-family>
+
+ <font-family name="Verdana" embed="true">
+ <font><font-data ttf="verdana.ttf"/></font>
+ <font style="oblique"><font-data ttf="verdanai.ttf"/></font>
+ <font weight="bold"><font-data ttf="verdanab.ttf"/></font>
+ <font weight="bold" style="oblique"><font-data ttf="verdanaz.ttf"/></font>
+ </font-family>
+
+ <font-family name="Palatino" embed="true" ligatures="&#xFB00; &#xFB01; &#xFB02; &#xFB03; &#xFB04;">
+ <font><font-data ttf="pala.ttf"/></font>
+ <font style="italic"><font-data ttf="palai.ttf"/></font>
+ <font weight="bold"><font-data ttf="palab.ttf"/></font>
+ <font weight="bold" style="italic"><font-data ttf="palabi.ttf"/></font>
+ </font-family>
+
+ <font-family name="Lucida Sans Unicode">
+ <!-- <font><font-data ttf="lsansuni.ttf"><<span class="emphasis"><em>font> -->
+ <!-- actually called l_10646.ttf on Windows 2000 and Vista Sp1 -->
+ <font><font-data ttf="l_10646.ttf"</em></span>></font>
+ </font-family>
+</pre>
+<p>
+ PAB had to alter his because the Lucida Sans Unicode font had a different name.
+ Other changes are very likely to be required if you are not using Windows.
+ </p>
+<p>
+ XZ authored his equations using the venerable Latex, JM converted these to
+ MathML using mxlatex.
+ This process is currently unreliable and required some manual intervention:
+ consequently Latex source is not considered a viable route for the automatic
+ production of SVG versions of equations.
+ </p>
+<p>
+ Equations are embedded in the quickbook source using the <span class="emphasis"><em>equation</em></span>
+ template defined in math.qbk. This outputs Docbook XML that looks like:
+ </p>
+<pre class="programlisting"><inlinemediaobject>
+<imageobject role="html">
+<imagedata fileref="../equations/myfile.png"></imagedata>
+</imageobject>
+<imageobject role="print">
+<imagedata fileref="../equations/myfile.svg"></imagedata>
+</imageobject>
+</inlinemediaobject>
+</pre>
+<p>
+ MathML is not currently present in the Docbook output, or in the generated
+ HTML: this needs further investigation.
+ </p>
+<h5>
+<a name="math_toolkit.sf_implementation.h15"></a>
+ <span class="phrase"><a name="math_toolkit.sf_implementation.producing_graphs"></a></span><a class="link" href="sf_implementation.html#math_toolkit.sf_implementation.producing_graphs">Producing
+ Graphs</a>
+ </h5>
+<p>
+ Graphs were produced in SVG format and then converted to PNG's using the same
+ process as the equations.
+ </p>
+<p>
+ The programs <code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">doc</span><span class="special">/</span><span class="identifier">sf_and_dist</span><span class="special">/</span><span class="identifier">graphs</span><span class="special">/</span><span class="identifier">dist_graphs</span><span class="special">.</span><span class="identifier">cpp</span></code> and <code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">doc</span><span class="special">/</span><span class="identifier">sf_and_dist</span><span class="special">/</span><span class="identifier">graphs</span><span class="special">/</span><span class="identifier">sf_graphs</span><span class="special">.</span><span class="ident
ifier">cpp</span></code> generate
+ the SVG's directly using the <a href="http://code.google.com/soc/2007/boost/about.html" target="_top">Google
+ Summer of Code 2007</a> project of Jacob Voytko (whose work so far, considerably
+ enhanced and now reasonably mature and usable, by Paul A. Bristow, is at .\boost-sandbox\SOC\2007\visualization).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../backgrounders.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../backgrounders.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="relative_error.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_poly.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_poly.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,44 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Polynomials</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="sf_erf/error_inv.html" title="Error Function Inverses">
+<link rel="next" href="sf_poly/legendre.html" title="Legendre (and Associated) Polynomials">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sf_erf/error_inv.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sf_poly/legendre.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_poly">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.sf_poly"></a><a class="link" href="sf_poly.html" title="Polynomials">Polynomials</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="sf_poly/legendre.html">Legendre (and Associated)
+ Polynomials</a></span></dt>
+<dt><span class="section"><a href="sf_poly/laguerre.html">Laguerre (and Associated)
+ Polynomials</a></span></dt>
+<dt><span class="section">Hermite Polynomials</span></dt>
+<dt><span class="section">Spherical Harmonics</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sf_erf/error_inv.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sf_poly/legendre.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/hermite.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/hermite.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,270 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Hermite Polynomials</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_poly.html" title="Polynomials">
+<link rel="prev" href="laguerre.html" title="Laguerre (and Associated) Polynomials">
+<link rel="next" href="sph_harm.html" title="Spherical Harmonics">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="laguerre.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_poly.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sph_harm.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_poly_hermite">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_poly.hermite"></a><a class="link" href="hermite.html" title="Hermite Polynomials">Hermite Polynomials</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_poly.hermite.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.hermite.synopsis"></a></span><a class="link" href="hermite.html#math_toolkit.sf_poly.hermite.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">hermite</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">hermite</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">hermite</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">hermite_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Hn</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Hnm1</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_poly.hermite.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.hermite.description"></a></span><a class="link" href="hermite.html#math_toolkit.sf_poly.hermite.description">Description</a>
+ </h5>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: note than when there is a single
+ template argument the result is the same type as that argument or <code class="computeroutput"><span class="keyword">double</span></code> if the template argument is an integer
+ type.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">hermite</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">hermite</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the value of the Hermite Polynomial of order <span class="emphasis"><em>n</em></span>
+ at point <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/hermite_0.png"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ The following graph illustrates the behaviour of the first few Hermite Polynomials:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/hermite.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">hermite_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Hn</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Hnm1</span><span class="special">);</span>
+</pre>
+<p>
+ Implements the three term recurrence relation for the Hermite polynomials,
+ this function can be used to create a sequence of values evaluated at the
+ same <span class="emphasis"><em>x</em></span>, and for rising <span class="emphasis"><em>n</em></span>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/hermite_1.png"></span>
+ </p>
+<p>
+ For example we could produce a vector of the first 10 polynomial values using:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0.5</span><span class="special">;</span> <span class="comment">// Abscissa value</span>
+<span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">hermite</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)).</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">hermite</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">x</span><span class="special">));</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">l</span> <span class="special"><</span> <span class="number">10</span><span class="special">;</span> <span class="special">++</span><span class="identifier">l</span><span class="special">)</span>
+ <span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">hermite_next</span><span class="special">(</span><span class="identifier">l</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">],</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">-</span><span class="number">1</span><span class="special">]));</span>
+</pre>
+<p>
+ Formally the arguments are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">n</span></dt>
+<dd><p>
+ The degree <span class="emphasis"><em>n</em></span> of the last polynomial calculated.
+ </p></dd>
+<dt><span class="term">x</span></dt>
+<dd><p>
+ The abscissa value
+ </p></dd>
+<dt><span class="term">Hn</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>n</em></span>.
+ </p></dd>
+<dt><span class="term">Hnm1</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>n-1</em></span>.
+ </p></dd>
+</dl>
+</div>
+<h5>
+<a name="math_toolkit.sf_poly.hermite.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.hermite.accuracy"></a></span><a class="link" href="hermite.html#math_toolkit.sf_poly.hermite.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows peak errors (in units of epsilon) for various domains
+ of input arguments. Note that only results for the widest floating point
+ type on the system are given as narrower types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.sf_poly.hermite.peak_errors_in_the_hermite_polyn"></a><p class="title"><b>Table 3.19. Peak Errors In the Hermite Polynomial</b></p>
+<div class="table-contents"><table class="table" summary="Peak Errors In the Hermite Polynomial">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 0 < l < 20
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4.5 Mean=1.5
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA32, g++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6 Mean=2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64, g++ 3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6 Mean=2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6 Mean=4
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ Note that the worst errors occur when the degree increases, values greater
+ than ~120 are very unlikely to produce sensible results, especially in the
+ associated polynomial case when the order is also large. Further the relative
+ errors are likely to grow arbitrarily large when the function is very close
+ to a root.
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.hermite.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.hermite.testing"></a></span><a class="link" href="hermite.html#math_toolkit.sf_poly.hermite.testing">Testing</a>
+ </h5>
+<p>
+ A mixture of spot tests of values calculated using functions.wolfram.com,
+ and randomly generated test data are used: the test data was computed using
+ NTL::RR at 1000-bit
+ precision.
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.hermite.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.hermite.implementation"></a></span><a class="link" href="hermite.html#math_toolkit.sf_poly.hermite.implementation">Implementation</a>
+ </h5>
+<p>
+ These functions are implemented using the stable three term recurrence relations.
+ These relations guarentee low absolute error but cannot guarentee low relative
+ error near one of the roots of the polynomials.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="laguerre.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_poly.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sph_harm.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/laguerre.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/laguerre.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,443 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Laguerre (and Associated) Polynomials</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_poly.html" title="Polynomials">
+<link rel="prev" href="legendre.html" title="Legendre (and Associated) Polynomials">
+<link rel="next" href="hermite.html" title="Hermite Polynomials">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="legendre.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_poly.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="hermite.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_poly_laguerre">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_poly.laguerre"></a><a class="link" href="laguerre.html" title="Laguerre (and Associated) Polynomials">Laguerre (and Associated)
+ Polynomials</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_poly.laguerre.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.laguerre.synopsis"></a></span><a class="link" href="laguerre.html#math_toolkit.sf_poly.laguerre.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">laguerre</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Ln</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Lnm1</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Ln</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Lnm1</span><span class="special">);</span>
+
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_poly.laguerre.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.laguerre.description"></a></span><a class="link" href="laguerre.html#math_toolkit.sf_poly.laguerre.description">Description</a>
+ </h5>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: note than when there is a single
+ template argument the result is the same type as that argument or <code class="computeroutput"><span class="keyword">double</span></code> if the template argument is an integer
+ type.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the value of the Laguerre Polynomial of order <span class="emphasis"><em>n</em></span>
+ at point <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/laguerre_0.png"></span>
+ </p>
+<p>
+ The following graph illustrates the behaviour of the first few Laguerre Polynomials:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/laguerre.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the Associated Laguerre polynomial of degree <span class="emphasis"><em>n</em></span>
+ and order <span class="emphasis"><em>m</em></span> at point <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/laguerre_1.png"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Ln</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Lnm1</span><span class="special">);</span>
+</pre>
+<p>
+ Implements the three term recurrence relation for the Laguerre polynomials,
+ this function can be used to create a sequence of values evaluated at the
+ same <span class="emphasis"><em>x</em></span>, and for rising <span class="emphasis"><em>n</em></span>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/laguerre_2.png"></span>
+ </p>
+<p>
+ For example we could produce a vector of the first 10 polynomial values using:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0.5</span><span class="special">;</span> <span class="comment">// Abscissa value</span>
+<span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">laguerre</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)).</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">laguerre</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">x</span><span class="special">));</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">l</span> <span class="special"><</span> <span class="number">10</span><span class="special">;</span> <span class="special">++</span><span class="identifier">l</span><span class="special">)</span>
+ <span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">laguerre_next</span><span class="special">(</span><span class="identifier">l</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">],</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">-</span><span class="number">1</span><span class="special">]));</span>
+</pre>
+<p>
+ Formally the arguments are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">n</span></dt>
+<dd><p>
+ The degree <span class="emphasis"><em>n</em></span> of the last polynomial calculated.
+ </p></dd>
+<dt><span class="term">x</span></dt>
+<dd><p>
+ The abscissa value
+ </p></dd>
+<dt><span class="term">Ln</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>n</em></span>.
+ </p></dd>
+<dt><span class="term">Lnm1</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>n-1</em></span>.
+ </p></dd>
+</dl>
+</div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">laguerre_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Ln</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Lnm1</span><span class="special">);</span>
+</pre>
+<p>
+ Implements the three term recurrence relation for the Associated Laguerre
+ polynomials, this function can be used to create a sequence of values evaluated
+ at the same <span class="emphasis"><em>x</em></span>, and for rising degree <span class="emphasis"><em>n</em></span>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/laguerre_3.png"></span>
+ </p>
+<p>
+ For example we could produce a vector of the first 10 polynomial values using:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0.5</span><span class="special">;</span> <span class="comment">// Abscissa value</span>
+<span class="keyword">int</span> <span class="identifier">m</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span> <span class="comment">// order</span>
+<span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">laguerre</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)).</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">laguerre</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">x</span><span class="special">));</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">l</span> <span class="special"><</span> <span class="number">10</span><span class="special">;</span> <span class="special">++</span><span class="identifier">l</span><span class="special">)</span>
+ <span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">laguerre_next</span><span class="special">(</span><span class="identifier">l</span><span class="special">,</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">],</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">-</span><span class="number">1</span><span class="special">]));</span>
+</pre>
+<p>
+ Formally the arguments are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">n</span></dt>
+<dd><p>
+ The degree of the last polynomial calculated.
+ </p></dd>
+<dt><span class="term">m</span></dt>
+<dd><p>
+ The order of the Associated Polynomial.
+ </p></dd>
+<dt><span class="term">x</span></dt>
+<dd><p>
+ The abscissa value.
+ </p></dd>
+<dt><span class="term">Ln</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>n</em></span>.
+ </p></dd>
+<dt><span class="term">Lnm1</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>n-1</em></span>.
+ </p></dd>
+</dl>
+</div>
+<h5>
+<a name="math_toolkit.sf_poly.laguerre.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.laguerre.accuracy"></a></span><a class="link" href="laguerre.html#math_toolkit.sf_poly.laguerre.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows peak errors (in units of epsilon) for various domains
+ of input arguments. Note that only results for the widest floating point
+ type on the system are given as narrower types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.sf_poly.laguerre.peak_errors_in_the_laguerre_poly"></a><p class="title"><b>Table 3.17. Peak Errors In the Laguerre Polynomial</b></p>
+<div class="table-contents"><table class="table" summary="Peak Errors In the Laguerre Polynomial">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 0 < l < 20
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=3000 Mean=185
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux IA32, g++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1x10<sup>4</sup> Mean=828
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64, g++ 3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1x10<sup>4</sup> Mean=828
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=680 Mean=40
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_poly.laguerre.peak_errors_in_the_associated_la"></a><p class="title"><b>Table 3.18. Peak Errors In the Associated Laguerre Polynomial</b></p>
+<div class="table-contents"><table class="table" summary="Peak Errors In the Associated Laguerre Polynomial">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 0 < l < 20
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=433 Mean=11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux IA32, g++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=61.4 Mean=19.5
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64, g++ 3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=61.4 Mean=19.5
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=540 Mean=13.94
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ Note that the worst errors occur when the degree increases, values greater
+ than ~120 are very unlikely to produce sensible results, especially in the
+ associated polynomial case when the order is also large. Further the relative
+ errors are likely to grow arbitrarily large when the function is very close
+ to a root.
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.laguerre.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.laguerre.testing"></a></span><a class="link" href="laguerre.html#math_toolkit.sf_poly.laguerre.testing">Testing</a>
+ </h5>
+<p>
+ A mixture of spot tests of values calculated using functions.wolfram.com,
+ and randomly generated test data are used: the test data was computed using
+ NTL::RR at 1000-bit
+ precision.
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.laguerre.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.laguerre.implementation"></a></span><a class="link" href="laguerre.html#math_toolkit.sf_poly.laguerre.implementation">Implementation</a>
+ </h5>
+<p>
+ These functions are implemented using the stable three term recurrence relations.
+ These relations guarentee low absolute error but cannot guarentee low relative
+ error near one of the roots of the polynomials.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="legendre.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_poly.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="hermite.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/legendre.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/legendre.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,698 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Legendre (and Associated) Polynomials</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_poly.html" title="Polynomials">
+<link rel="prev" href="../sf_poly.html" title="Polynomials">
+<link rel="next" href="laguerre.html" title="Laguerre (and Associated) Polynomials">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../sf_poly.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_poly.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="laguerre.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_poly_legendre">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_poly.legendre"></a><a class="link" href="legendre.html" title="Legendre (and Associated) Polynomials">Legendre (and Associated)
+ Polynomials</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_poly.legendre.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.legendre.synopsis"></a></span><a class="link" href="legendre.html#math_toolkit.sf_poly.legendre.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">legendre</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_p</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_p</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_p</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_p</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_q</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_q</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Pl</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Plm1</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Pl</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Plm1</span><span class="special">);</span>
+
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: note than when there is a single
+ template argument the result is the same type as that argument or <code class="computeroutput"><span class="keyword">double</span></code> if the template argument is an integer
+ type.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.legendre.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.legendre.description"></a></span><a class="link" href="legendre.html#math_toolkit.sf_poly.legendre.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_p</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_p</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the Legendre Polynomial of the first kind:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/legendre_0.png"></span>
+ </p>
+<p>
+ Requires -1 <= x <= 1, otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ Negative orders are handled via the reflection formula:
+ </p>
+<p>
+ P<sub>-l-1</sub>(x) = P<sub>l</sub>(x)
+ </p>
+<p>
+ The following graph illustrates the behaviour of the first few Legendre Polynomials:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/legendre_p.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_p</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_p</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the associated Legendre polynomial of the first kind:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/legendre_1.png"></span>
+ </p>
+<p>
+ Requires -1 <= x <= 1, otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
+ </p>
+<p>
+ Negative values of <span class="emphasis"><em>l</em></span> and <span class="emphasis"><em>m</em></span> are
+ handled via the identity relations:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/legendre_3.png"></span>
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The definition of the associated Legendre polynomial used here includes
+ a leading Condon-Shortley phase term of (-1)<sup>m</sup>. This matches the definition
+ given by Abramowitz and Stegun (8.6.6) and that used by Mathworld
+ and <a href="http://documents.wolfram.com/mathematica/functions/LegendreP" target="_top">Mathematica's
+ LegendreP function</a>. However, uses in the literature do not always
+ include this phase term, and strangely the specification for the associated
+ Legendre function in the C++ TR1 (assoc_legendre) also omits it, in spite
+ of stating that it uses Abramowitz and Stegun as the final arbiter on these
+ matters.
+ </p>
+<p>
+ See:
+ </p>
+<p>
+ <a href="http://mathworld.wolfram.com/LegendrePolynomial.html" target="_top">Weisstein,
+ Eric W. "Legendre Polynomial." From MathWorld--A Wolfram Web
+ Resource</a>.
+ </p>
+<p>
+ Abramowitz, M. and Stegun, I. A. (Eds.). "Legendre Functions"
+ and "Orthogonal Polynomials." Ch. 22 in Chs. 8 and 22 in Handbook
+ of Mathematical Functions with Formulas, Graphs, and Mathematical Tables,
+ 9th printing. New York: Dover, pp. 331-339 and 771-802, 1972.
+ </p>
+</td></tr>
+</table></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_q</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_q</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the value of the Legendre polynomial that is the second solution
+ to the Legendre differential equation, for example:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/legendre_2.png"></span>
+ </p>
+<p>
+ Requires -1 <= x <= 1, otherwise <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
+ is called.
+ </p>
+<p>
+ The following graph illustrates the first few Legendre functions of the second
+ kind:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/legendre_q.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Pl</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Plm1</span><span class="special">);</span>
+</pre>
+<p>
+ Implements the three term recurrence relation for the Legendre polynomials,
+ this function can be used to create a sequence of values evaluated at the
+ same <span class="emphasis"><em>x</em></span>, and for rising <span class="emphasis"><em>l</em></span>. This
+ recurrence relation holds for Legendre Polynomials of both the first and
+ second kinds.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/legendre_4.png"></span>
+ </p>
+<p>
+ For example we could produce a vector of the first 10 polynomial values using:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0.5</span><span class="special">;</span> <span class="comment">// Abscissa value</span>
+<span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">legendre_p</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">x</span><span class="special">));</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">legendre_p</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">x</span><span class="special">));</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">l</span> <span class="special"><</span> <span class="number">10</span><span class="special">;</span> <span class="special">++</span><span class="identifier">l</span><span class="special">)</span>
+ <span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">legendre_next</span><span class="special">(</span><span class="identifier">l</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">],</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">-</span><span class="number">1</span><span class="special">]));</span>
+<span class="comment">// Double check values:</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">l</span> <span class="special"><</span> <span class="number">10</span><span class="special">;</span> <span class="special">++</span><span class="identifier">l</span><span class="special">)</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">]</span> <span class="special">==</span> <span class="identifier">legendre_p</span><span class="special">(</span><span class="identifier">l</span><span class="special">,</span> <span class="identifier">x</span><span class="special">));</span>
+</pre>
+<p>
+ Formally the arguments are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">l</span></dt>
+<dd><p>
+ The degree of the last polynomial calculated.
+ </p></dd>
+<dt><span class="term">x</span></dt>
+<dd><p>
+ The abscissa value
+ </p></dd>
+<dt><span class="term">Pl</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>l</em></span>.
+ </p></dd>
+<dt><span class="term">Plm1</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>l-1</em></span>.
+ </p></dd>
+</dl>
+</div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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> <span class="identifier">T3</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">legendre_next</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">Pl</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">Plm1</span><span class="special">);</span>
+</pre>
+<p>
+ Implements the three term recurrence relation for the Associated Legendre
+ polynomials, this function can be used to create a sequence of values evaluated
+ at the same <span class="emphasis"><em>x</em></span>, and for rising <span class="emphasis"><em>l</em></span>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/legendre_5.png"></span>
+ </p>
+<p>
+ For example we could produce a vector of the first m+10 polynomial values
+ using:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0.5</span><span class="special">;</span> <span class="comment">// Abscissa value</span>
+<span class="keyword">int</span> <span class="identifier">m</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span> <span class="comment">// order</span>
+<span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">legendre_p</span><span class="special">(</span><span class="identifier">m</span><span class="special">,</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">x</span><span class="special">));</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">legendre_p</span><span class="special">(</span><span class="number">1</span> <span class="special">+</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">x</span><span class="special">));</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">l</span> <span class="special"><</span> <span class="number">10</span><span class="special">;</span> <span class="special">++</span><span class="identifier">l</span><span class="special">)</span>
+ <span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">legendre_next</span><span class="special">(</span><span class="identifier">l</span> <span class="special">+</span> <span class="number">10</span><span class="special">,</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">],</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">-</span><span class="number">1</span><span class="special">]));</span>
+<span class="comment">// Double check values:</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">l</span> <span class="special"><</span> <span class="number">10</span><span class="special">;</span> <span class="special">++</span><span class="identifier">l</span><span class="special">)</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">v</span><span class="special">[</span><span class="identifier">l</span><span class="special">]</span> <span class="special">==</span> <span class="identifier">legendre_p</span><span class="special">(</span><span class="number">10</span> <span class="special">+</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">x</span><span class="special">));</span>
+</pre>
+<p>
+ Formally the arguments are:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term">l</span></dt>
+<dd><p>
+ The degree of the last polynomial calculated.
+ </p></dd>
+<dt><span class="term">m</span></dt>
+<dd><p>
+ The order of the Associated Polynomial.
+ </p></dd>
+<dt><span class="term">x</span></dt>
+<dd><p>
+ The abscissa value
+ </p></dd>
+<dt><span class="term">Pl</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>l</em></span>.
+ </p></dd>
+<dt><span class="term">Plm1</span></dt>
+<dd><p>
+ The value of the polynomial evaluated at degree <span class="emphasis"><em>l-1</em></span>.
+ </p></dd>
+</dl>
+</div>
+<h5>
+<a name="math_toolkit.sf_poly.legendre.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.legendre.accuracy"></a></span><a class="link" href="legendre.html#math_toolkit.sf_poly.legendre.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows peak errors (in units of epsilon) for various domains
+ of input arguments. Note that only results for the widest floating point
+ type on the system are given as narrower types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.sf_poly.legendre.peak_errors_in_the_legendre_p_fu"></a><p class="title"><b>Table 3.14. Peak Errors In the Legendre P Function</b></p>
+<div class="table-contents"><table class="table" summary="Peak Errors In the Legendre P Function">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 0 < l < 20
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 20 < l < 120
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=211 Mean=20
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=300 Mean=33
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux IA32, g++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=70 Mean=10
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=700 Mean=60
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64, g++ 3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=70 Mean=10
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=700 Mean=60
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=35 Mean=6
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=292 Mean=41
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_poly.legendre.peak_errors_in_the_associated_le"></a><p class="title"><b>Table 3.15. Peak Errors In the Associated Legendre P Function</b></p>
+<div class="table-contents"><table class="table" summary="Peak Errors In the Associated Legendre P Function">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 0 < l < 20
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1200 Mean=7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux IA32, g++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=80 Mean=5
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64, g++ 3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=80 Mean=5
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=42 Mean=4
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="math_toolkit.sf_poly.legendre.peak_errors_in_the_legendre_q_fu"></a><p class="title"><b>Table 3.16. Peak Errors In the Legendre Q Function</b></p>
+<div class="table-contents"><table class="table" summary="Peak Errors In the Legendre Q Function">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 0 < l < 20
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 20 < l < 120
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=50 Mean=7
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=4600 Mean=370
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux IA32, g++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=51 Mean=8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6000 Mean=480
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64, g++ 3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=51 Mean=8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6000 Mean=480
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=90 Mean=10
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1700 Mean=140
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ Note that the worst errors occur when the order increases, values greater
+ than ~120 are very unlikely to produce sensible results, especially in the
+ associated polynomial case when the degree is also large. Further the relative
+ errors are likely to grow arbitrarily large when the function is very close
+ to a root.
+ </p>
+<p>
+ No comparisons to other libraries are shown here: there appears to be only
+ one viable implementation method for these functions, the comparisons to
+ other libraries that have been run show identical error rates to those given
+ here.
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.legendre.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.legendre.testing"></a></span><a class="link" href="legendre.html#math_toolkit.sf_poly.legendre.testing">Testing</a>
+ </h5>
+<p>
+ A mixture of spot tests of values calculated using functions.wolfram.com,
+ and randomly generated test data are used: the test data was computed using
+ NTL::RR at 1000-bit
+ precision.
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.legendre.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.legendre.implementation"></a></span><a class="link" href="legendre.html#math_toolkit.sf_poly.legendre.implementation">Implementation</a>
+ </h5>
+<p>
+ These functions are implemented using the stable three term recurrence relations.
+ These relations guarentee low absolute error but cannot guarentee low relative
+ error near one of the roots of the polynomials.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../sf_poly.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_poly.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="laguerre.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/sph_harm.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sf_poly/sph_harm.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,298 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Spherical Harmonics</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sf_poly.html" title="Polynomials">
+<link rel="prev" href="hermite.html" title="Hermite Polynomials">
+<link rel="next" href="../bessel.html" title="Bessel Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="hermite.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_poly.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../bessel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sf_poly_sph_harm">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sf_poly.sph_harm"></a><a class="link" href="sph_harm.html" title="Spherical Harmonics">Spherical Harmonics</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.sf_poly.sph_harm.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.sph_harm.synopsis"></a></span><a class="link" href="sph_harm.html#math_toolkit.sf_poly.sph_harm.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">spherical_harmonic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</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="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">spherical_harmonic</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">spherical_harmonic</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">spherical_harmonic_r</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">spherical_harmonic_r</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">spherical_harmonic_i</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">spherical_harmonic_i</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sf_poly.sph_harm.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.sph_harm.description"></a></span><a class="link" href="sph_harm.html#math_toolkit.sf_poly.sph_harm.description">Description</a>
+ </h5>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../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.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">spherical_harmonic</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a><span class="special">></span> <span class="identifier">spherical_harmonic</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the value of the Spherical Harmonic Y<sub>n</sub><sup>m</sup>(theta, phi):
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/spherical_0.png"></span>
+ </p>
+<p>
+ The spherical harmonics Y<sub>n</sub><sup>m</sup>(theta, phi) are the angular portion of the solution
+ to Laplace's equation in spherical coordinates where azimuthal symmetry is
+ not present.
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ Care must be taken in correctly identifying the arguments to this function:
+ θ   is taken as the polar (colatitudinal) coordinate with θ   in [0, π], and φ   as
+ the azimuthal (longitudinal) coordinate with φ   in [0,2π). This is the convention
+ used in Physics, and matches the definition used by <a href="http://documents.wolfram.com/mathematica/functions/SphericalHarmonicY" target="_top">Mathematica
+ in the function SpericalHarmonicY</a>, but is opposite to the usual
+ mathematical conventions.
+ </p>
+<p>
+ Some other sources include an additional Condon-Shortley phase term of
+ (-1)<sup>m</sup> in the definition of this function: note however that our definition
+ of the associated Legendre polynomial already includes this term.
+ </p>
+<p>
+ This implementation returns zero for m > n
+ </p>
+<p>
+ For θ   outside [0, π] and φ   outside [0, 2π] this implementation follows the convention
+ used by Mathematica: the function is periodic with period π   in θ   and 2π   in φ.
+ Please note that this is not the behaviour one would get from a casual
+ application of the function's definition. Cautious users should keep θ   and
+ φ   to the range [0, π] and [0, 2π] respectively.
+ </p>
+<p>
+ See: <a href="http://mathworld.wolfram.com/SphericalHarmonic.html" target="_top">Weisstein,
+ Eric W. "Spherical Harmonic." From MathWorld--A Wolfram Web Resource</a>.
+ </p>
+</td></tr>
+</table></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">spherical_harmonic_r</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">spherical_harmonic_r</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the real part of Y<sub>n</sub><sup>m</sup>(theta, phi):
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/spherical_1.png"></span>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">spherical_harmonic_i</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">spherical_harmonic_i</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">phi</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the imaginary part of Y<sub>n</sub><sup>m</sup>(theta, phi):
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/spherical_2.png"></span>
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.sph_harm.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.sph_harm.accuracy"></a></span><a class="link" href="sph_harm.html#math_toolkit.sf_poly.sph_harm.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows peak errors for various domains of input arguments.
+ Note that only results for the widest floating point type on the system are
+ given as narrower types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>. Peak errors are the same for both the real and imaginary
+ parts, as the error is dominated by calculation of the associated Legendre
+ polynomials: especially near the roots of the associated Legendre function.
+ </p>
+<p>
+ All values are in units of epsilon.
+ </p>
+<div class="table">
+<a name="math_toolkit.sf_poly.sph_harm.peak_errors_in_the_sperical_harm"></a><p class="title"><b>Table 3.20. Peak Errors In the Sperical Harmonic Functions</b></p>
+<div class="table-contents"><table class="table" summary="Peak Errors In the Sperical Harmonic Functions">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Errors in range
+ </p>
+ <p>
+ 0 < l < 20
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2x10<sup>4</sup> Mean=700
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ SUSE Linux IA32, g++ 4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2900 Mean=100
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Red Hat Linux IA64, g++ 3.4.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=2900 Mean=100
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=6700 Mean=230
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ Note that the worst errors occur when the degree increases, values greater
+ than ~120 are very unlikely to produce sensible results, especially when
+ the order is also large. Further the relative errors are likely to grow arbitrarily
+ large when the function is very close to a root.
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.sph_harm.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.sph_harm.testing"></a></span><a class="link" href="sph_harm.html#math_toolkit.sf_poly.sph_harm.testing">Testing</a>
+ </h5>
+<p>
+ A mixture of spot tests of values calculated using functions.wolfram.com,
+ and randomly generated test data are used: the test data was computed using
+ NTL::RR at 1000-bit
+ precision.
+ </p>
+<h5>
+<a name="math_toolkit.sf_poly.sph_harm.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sf_poly.sph_harm.implementation"></a></span><a class="link" href="sph_harm.html#math_toolkit.sf_poly.sph_harm.implementation">Implementation</a>
+ </h5>
+<p>
+ These functions are implemented fairly naively using the formulae given above.
+ Some extra care is taken to prevent roundoff error when converting from polar
+ coordinates (so for example the <span class="emphasis"><em>1-x<sup>2</sup></em></span> term used by the
+ associated Legendre functions is calculated without roundoff error using
+ <span class="emphasis"><em>x = cos(theta)</em></span>, and <span class="emphasis"><em>1-x<sup>2</sup> = sin<sup>2</sup>(theta)</em></span>).
+ The limiting factor in the error rates for these functions is the need to
+ calculate values near the roots of the associated Legendre functions.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="hermite.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sf_poly.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../bessel.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sign_functions.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sign_functions.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,240 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Sign Manipulation Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../utils.html" title="Chapter 4. Floating Point Utilities">
+<link rel="prev" href="fpclass.html" title="Floating-Point Classification: Infinities and NaNs">
+<link rel="next" href="fp_facets.html" title="Facets for Floating-Point Infinities and NaNs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="fpclass.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="fp_facets.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sign_functions">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.sign_functions"></a><a class="link" href="sign_functions.html" title="Sign Manipulation Functions">Sign Manipulation Functions</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.sign_functions.h0"></a>
+ <span class="phrase"><a name="math_toolkit.sign_functions.synopsis"></a></span><a class="link" href="sign_functions.html#math_toolkit.sign_functions.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">sign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">signbit</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">sign</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">copysign</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">changesign</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h5>
+<a name="math_toolkit.sign_functions.h1"></a>
+ <span class="phrase"><a name="math_toolkit.sign_functions.description"></a></span><a class="link" href="sign_functions.html#math_toolkit.sign_functions.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">signbit</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns a non-zero value if the sign bit is set in variable <span class="emphasis"><em>x</em></span>,
+ otherwise <code class="computeroutput"><span class="number">0</span></code>.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The return value from this function is zero or <span class="emphasis"><em>not-zero</em></span>
+ and <span class="bold"><strong>not</strong></span> zero or one.
+ </p></td></tr>
+</table></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">int</span> <span class="identifier">sign</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="number">1</span></code> if <span class="emphasis"><em>x</em></span>
+ <code class="computeroutput"><span class="special">></span> <span class="number">0</span></code>,
+ <code class="computeroutput"><span class="special">-</span><span class="number">1</span></code>
+ if <span class="emphasis"><em>x</em></span> <code class="computeroutput"><span class="special"><</span> <span class="number">0</span></code>, and <code class="computeroutput"><span class="number">0</span></code>
+ if <span class="emphasis"><em>x</em></span> is zero.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<a class="link" href="result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">copysign</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">y</span><span class="special">);</span>
+</pre>
+<p>
+ Sets the sign of <span class="emphasis"><em>x</em></span> to be the same as the sign of <span class="emphasis"><em>y</em></span>.
+ </p>
+<p>
+ See <a href="http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf" target="_top">C99
+ 7.12.11.1 The copysign functions</a> for more detail.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">T</span> <span class="identifier">changesign</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">z</span><span class="special">);</span>
+</pre>
+<p>
+ Returns a floating point number with a binary representation where the signbit
+ is the opposite of the sign bit in <span class="emphasis"><em>x</em></span>, and where the other
+ bits are the same as in <span class="emphasis"><em>x</em></span>.
+ </p>
+<p>
+ This function is widely available, but not specified in any standards.
+ </p>
+<p>
+ Rationale: Not specified by TR1, but <code class="computeroutput"><span class="identifier">changesign</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>
+ is both easier to read and more efficient than
+ </p>
+<pre class="programlisting"><span class="identifier">copysign</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">signbit</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">?</span> <span class="number">1.0</span> <span class="special">:</span> <span class="special">-</span><span class="number">1.0</span><span class="special">);</span>
+</pre>
+<p>
+ For finite values, this function has the same effect as simple negation, the
+ assignment z = -z, but for nonfinite values, infinities
+ and NaNs, the <code class="computeroutput"><span class="identifier">changesign</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code> function
+ may be the only portable way to ensure that the sign bit is changed.
+ </p>
+<h6>
+<a name="math_toolkit.sign_functions.h2"></a>
+ <span class="phrase"><a name="math_toolkit.sign_functions.sign_bits"></a></span><a class="link" href="sign_functions.html#math_toolkit.sign_functions.sign_bits">Sign
+ bits</a>
+ </h6>
+<p>
+ One of the bits in the binary representation of a floating-point number gives
+ the sign, and the remaining bits give the absolute value. That bit is known
+ as the sign bit. The sign bit is set = 1 for negative numbers, and is not set
+ = 0 for positive numbers. (This is true for all binary representations of floating
+ point numbers that are used by modern microprocessors.)
+ </p>
+<p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">C++
+ TR1</a> specifies <code class="computeroutput"><span class="identifier">copysign</span></code>
+ functions and function templates for accessing the sign bit.
+ </p>
+<p>
+ For user-defined types (UDT), the sign may be stored in some other way. They
+ may also not provide infinity or NaNs. To use these functions with a UDT, it
+ may be necessary to explicitly specialize then for UDT type T.
+ </p>
+<h6>
+<a name="math_toolkit.sign_functions.h3"></a>
+ <span class="phrase"><a name="math_toolkit.sign_functions.examples"></a></span><a class="link" href="sign_functions.html#math_toolkit.sign_functions.examples">Examples</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">signbit</span><span class="special">(</span><span class="number">3.5</span><span class="special">)</span> <span class="identifier">is</span> <span class="identifier">zero</span> <span class="special">(</span><span class="keyword">or</span> <span class="keyword">false</span><span class="special">)</span>
+<span class="identifier">signbit</span><span class="special">(-</span><span class="number">7.1</span><span class="special">)</span> <span class="identifier">is</span> <span class="number">1</span> <span class="special">(</span><span class="keyword">or</span> <span class="keyword">true</span><span class="special">)</span>
+<span class="identifier">copysign</span><span class="special">(</span><span class="number">4.2</span><span class="special">,</span> <span class="number">7.9</span><span class="special">)</span> <span class="identifier">is</span> <span class="number">4.2</span>
+<span class="identifier">copysign</span><span class="special">(</span><span class="number">3.5</span> <span class="special">-</span><span class="number">1.4</span><span class="special">)</span> <span class="identifier">is</span> <span class="special">-</span><span class="number">3.5</span>
+<span class="identifier">copysign</span><span class="special">(-</span><span class="number">4.2</span><span class="special">,</span> <span class="number">1.0</span><span class="special">)</span> <span class="identifier">is</span> <span class="number">4.2</span>
+<span class="identifier">copysign</span><span class="special">(-</span><span class="number">8.6</span><span class="special">,</span> <span class="special">-</span><span class="number">3.3</span><span class="special">)</span> <span class="identifier">is</span> <span class="special">-</span><span class="number">8.6</span>
+<span class="identifier">changesign</span><span class="special">(</span><span class="number">6.9</span><span class="special">)</span> <span class="identifier">is</span> <span class="special">-</span><span class="number">6.9</span>
+<span class="identifier">changesign</span><span class="special">(-</span><span class="number">1.8</span><span class="special">)</span> <span class="identifier">is</span> <span class="number">1.8</span>
+</pre>
+<h6>
+<a name="math_toolkit.sign_functions.h4"></a>
+ <span class="phrase"><a name="math_toolkit.sign_functions.portability"></a></span><a class="link" href="sign_functions.html#math_toolkit.sign_functions.portability">Portability</a>
+ </h6>
+<p>
+ The library supports the following binary floating-point formats:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ IEEE 754 single precision
+ </li>
+<li class="listitem">
+ IEEE 754 double precision
+ </li>
+<li class="listitem">
+ IEEE 754 extended double precision with 15 exponent bits
+ </li>
+<li class="listitem">
+ Intel extended double precision
+ </li>
+<li class="listitem">
+ PowerPC extended double precision
+ </li>
+<li class="listitem">
+ Motorola 68K extended double precision
+ </li>
+</ul></div>
+<p>
+ The library does not support the VAX floating-point formats. (These are available
+ on VMS, but the default on VMS is the IEEE 754 floating-point format.)
+ </p>
+<p>
+ The main portability issues are:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Unsupported floating point formats
+ </li>
+<li class="listitem">
+ The library depends on the header boost/detail/endian.hpp
+ </li>
+<li class="listitem">
+ Code such as <code class="computeroutput"><span class="preprocessor">#if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">__ia64</span><span class="special">)</span> <span class="special">||</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">__ia64__</span><span class="special">)</span> <span class="special">||</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">_M_IA64</span><span class="special">)</span></code> is used to determine the processor type.
+ </li>
+</ul></div>
+<p>
+ The library has passed all tests on the following platforms:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Win32 / MSVC 7.1 / 10.0 / x86
+ </li>
+<li class="listitem">
+ Win32 / Intel C++ 7.1, 8.1, 9.1 / x86
+ </li>
+<li class="listitem">
+ Mac OS X / GCC 3.3, 4.0 / ppc
+ </li>
+<li class="listitem">
+ Linux / Intel C++ 9.1 / x86, ia64
+ </li>
+<li class="listitem">
+ Linux / GCC 3.3 / x86, x64, ia64, ppc, hppa, mips, m68k
+ </li>
+<li class="listitem">
+ Linux / GCC 3.4 / x64
+ </li>
+<li class="listitem">
+ HP-UX / aCC, GCC 4.1 / ia64
+ </li>
+<li class="listitem">
+ HP-UX / aCC / hppa
+ </li>
+<li class="listitem">
+ Tru64 / Compaq C++ 7.1 / alpha
+ </li>
+<li class="listitem">
+ VMS / HP C++ 7.1 / alpha (in IEEE floating point mode)
+ </li>
+<li class="listitem">
+ VMS / HP C++ 7.2 / ia64 (in IEEE floating point mode)
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="fpclass.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../utils.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="fp_facets.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sinc.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sinc.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Sinus Cardinal and Hyperbolic Sinus Cardinal Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="powers/ct_pow.html" title="Compile Time Power of a Runtime Base">
+<link rel="next" href="sinc/sinc_overview.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="powers/ct_pow.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sinc/sinc_overview.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sinc">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.sinc"></a><a class="link" href="sinc.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions">Sinus Cardinal and Hyperbolic Sinus
+ Cardinal Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="sinc/sinc_overview.html">Sinus Cardinal and Hyperbolic
+ Sinus Cardinal Functions Overview</a></span></dt>
+<dt><span class="section">sinc_pi</span></dt>
+<dt><span class="section">sinhc_pi</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="powers/ct_pow.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="sinc/sinc_overview.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sinc/sinc_overview.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sinc/sinc_overview.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,73 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sinc.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions">
+<link rel="prev" href="../sinc.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions">
+<link rel="next" href="sinc_pi.html" title="sinc_pi">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../sinc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sinc.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sinc_pi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sinc_sinc_overview">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sinc.sinc_overview"></a><a class="link" href="sinc_overview.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview">Sinus Cardinal and Hyperbolic
+ Sinus Cardinal Functions Overview</a>
+</h3></div></div></div>
+<p>
+ The <a href="http://mathworld.wolfram.com/SincFunction.html" target="_top">Sinus Cardinal
+ family of functions</a> (indexed by the family of indices <code class="literal">a
+ > 0</code>) is defined by
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/special_functions_blurb20.png"></span>
+ </p>
+<p>
+ it sees heavy use in signal processing tasks.
+ </p>
+<p>
+ By analogy, the <a href="http://mathworld.wolfram.com/SinhcFunction.htm" target="_top">Hyperbolic
+ Sinus Cardinal</a> family of functions (also indexed by the family of
+ indices <code class="literal">a > 0</code>) is defined by
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/special_functions_blurb22.png"></span>
+ </p>
+<p>
+ These two families of functions are composed of entire functions.
+ </p>
+<p>
+ These functions (<a class="link" href="sinc_pi.html" title="sinc_pi">sinc_pi</a>
+ and <a class="link" href="sinhc_pi.html" title="sinhc_pi">sinhc_pi</a>) are needed
+ by <a href="http://www.boost.org/libs/math/quaternion/quaternion.html" target="_top">our
+ implementation</a> of quaternions
+ and octonions.
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em><span class="bold"><strong>Sinus Cardinal of index pi (purple) and
+ Hyperbolic Sinus Cardinal of index pi (red) on R</strong></span></em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="inlinemediaobject"><img src="../../../graphs/sinc_pi_and_sinhc_pi_on_r.png"></span>
+ </p></blockquote></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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../sinc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sinc.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sinc_pi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sinc/sinc_pi.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sinc/sinc_pi.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,69 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>sinc_pi</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sinc.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions">
+<link rel="prev" href="sinc_overview.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview">
+<link rel="next" href="sinhc_pi.html" title="sinhc_pi">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sinc_overview.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sinc.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sinhc_pi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sinc_sinc_pi">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sinc.sinc_pi"></a><a class="link" href="sinc_pi.html" title="sinc_pi">sinc_pi</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">sinc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sinc_pi</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sinc_pi</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">U</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">sinc_pi</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">U</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">sinc_pi</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Computes <a class="link" href="sinc_overview.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview">the Sinus Cardinal</a>
+ of x:
+ </p>
+<pre class="programlisting"><span class="identifier">sinc_pi</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">sin</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">x</span>
+</pre>
+<p>
+ The second form is for complex numbers, quaternions, octonions etc. Taylor
+ series are used at the origin to ensure accuracy.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/sinc_pi.png" align="middle"></span>
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sinc_overview.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sinc.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="sinhc_pi.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/sinc/sinhc_pi.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/sinc/sinhc_pi.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,73 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>sinhc_pi</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../sinc.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions">
+<link rel="prev" href="sinc_pi.html" title="sinc_pi">
+<link rel="next" href="../inv_hyper.html" title="Inverse Hyperbolic Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="sinc_pi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sinc.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../inv_hyper.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_sinc_sinhc_pi">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.sinc.sinhc_pi"></a><a class="link" href="sinhc_pi.html" title="sinhc_pi">sinhc_pi</a>
+</h3></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">sinhc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sinhc_pi</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sinhc_pi</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span>
+<span class="identifier">U</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">sinhc_pi</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<span class="identifier">U</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">sinhc_pi</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">U</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Computes http://mathworld.wolfram.com/SinhcFunction.html <a class="link" href="sinc_overview.html" title="Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview">the
+ Hyperbolic Sinus Cardinal</a> of x:
+ </p>
+<pre class="programlisting"><span class="identifier">sinhc_pi</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">sinh</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">x</span>
+</pre>
+<p>
+ The second form is for complex numbers, quaternions, octonions etc. Taylor
+ series are used at the origin to ensure accuracy.
+ </p>
+<p>
+ The return type of the first form is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a> when T is an integer type.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/sinhc_pi.png" align="middle"></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="sinc_pi.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../sinc.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../inv_hyper.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/spec.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/spec.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,182 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quaternion Specializations</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="quat.html" title="Template Class quaternion">
+<link rel="next" href="mem_typedef.html" title="Quaternion Member Typedefs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="quat.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="mem_typedef.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_spec">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.spec"></a><a class="link" href="spec.html" title="Quaternion Specializations">Quaternion Specializations</a>
+</h2></div></div></div>
+<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"><></span>
+<span class="keyword">class</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <a class="link" href="mem_typedef.html" title="Quaternion Member Typedefs">value_type</a><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier
">requested_d</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span
class="special"><</span><span class="keyword">float</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">float</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">real</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">unreal</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">C_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">C_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="math_quaternion_double"></a><pre class="programlisting"><span class="keyword">template</span><span class="special"><></span>
+<span class="keyword">class</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <a class="link" href="mem_typedef.html" title="Quaternion Member Typedefs">value_type</a><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifie
r">requested_d</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><sp
an class="special"><</span><span class="keyword">double</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">real</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">unreal</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">C_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">C_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="math_quaternion_long_double"></a><pre class="programlisting"><span class="keyword">template</span><span class="special"><></span>
+<span class="keyword">class</span> <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="mem_typedef.html" title="Quaternion Member Typedefs">value_type</a><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">l
ong</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span
class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>());</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">quaternion</a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">real</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">unreal</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_3</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">R_component_4</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">C_component_1</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">C_component_2</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">operator = </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">operator += </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">operator -= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">operator *= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span>
+ <span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>&</span> <a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">operator /= </a><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}</span> <span class="comment">// namespace math</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="quat.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="mem_typedef.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,145 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Statistical Distributions Tutorial</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../dist.html" title="Chapter 2. Statistical Distributions and Functions">
+<link rel="prev" href="../dist.html" title="Chapter 2. Statistical Distributions and Functions">
+<link rel="next" href="stat_tut/overview.html" title="Overview of Distributions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../dist.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="stat_tut/overview.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.stat_tut"></a><a class="link" href="stat_tut.html" title="Statistical Distributions Tutorial">Statistical Distributions Tutorial</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section">Overview of Distributions</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="stat_tut/overview/headers.html">Headers and
+ Namespaces</a></span></dt>
+<dt><span class="section"><a href="stat_tut/overview/objects.html">Distributions
+ are Objects</a></span></dt>
+<dt><span class="section"><a href="stat_tut/overview/generic.html">Generic operations
+ common to all distributions are non-member functions</a></span></dt>
+<dt><span class="section"><a href="stat_tut/overview/complements.html">Complements
+ are supported too - and when to use them</a></span></dt>
+<dt><span class="section"><a href="stat_tut/overview/parameters.html">Parameters
+ can be calculated</a></span></dt>
+<dt><span class="section">Summary</span></dt>
+</dl></dd>
+<dt><span class="section">Worked Examples</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="stat_tut/weg/dist_construct_eg.html">Distribution
+ Construction Examples</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/st_eg.html">Student's t Distribution
+ Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="stat_tut/weg/st_eg/tut_mean_intervals.html">Calculating
+ confidence intervals on the mean with the Students-t distribution</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/st_eg/tut_mean_test.html">Testing
+ a sample mean for difference from a "true" mean</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/st_eg/tut_mean_size.html">Estimating
+ how large a sample size would have to become in order to give a significant
+ Students-t test result with a single sample test</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/st_eg/two_sample_students_t.html">Comparing
+ the means of two samples with the Students-t test</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/st_eg/paired_st.html">Comparing
+ two paired samples with the Student's t distribution</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="stat_tut/weg/cs_eg.html">Chi Squared Distribution
+ Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="stat_tut/weg/cs_eg/chi_sq_intervals.html">Confidence
+ Intervals on the Standard Deviation</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/cs_eg/chi_sq_test.html">Chi-Square
+ Test for the Standard Deviation</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/cs_eg/chi_sq_size.html">Estimating
+ the Required Sample Sizes for a Chi-Square Test for the Standard Deviation</a></span></dt>
+</dl></dd>
+<dt><span class="section">F Distribution Examples</span></dt>
+<dt><span class="section"><a href="stat_tut/weg/binom_eg.html">Binomial Distribution
+ Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="stat_tut/weg/binom_eg/binomial_coinflip_example.html">Binomial
+ Coin-Flipping Example</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/binom_eg/binomial_quiz_example.html">Binomial
+ Quiz Example</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/binom_eg/binom_conf.html">Calculating
+ Confidence Limits on the Frequency of Occurrence for a Binomial Distribution</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/binom_eg/binom_size_eg.html">Estimating
+ Sample Sizes for a Binomial Distribution.</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="stat_tut/weg/geometric_eg.html">Geometric Distribution
+ Examples</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/neg_binom_eg.html">Negative Binomial
+ Distribution Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="stat_tut/weg/neg_binom_eg/neg_binom_conf.html">Calculating
+ Confidence Limits on the Frequency of Occurrence for the Negative Binomial
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html">Estimating
+ Sample Sizes for the Negative Binomial.</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/neg_binom_eg/negative_binomial_example1.html">Negative
+ Binomial Sales Quota Example.</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/neg_binom_eg/negative_binomial_example2.html">Negative
+ Binomial Table Printing Example.</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="stat_tut/weg/normal_example.html">Normal Distribution
+ Examples</a></span></dt>
+<dd><dl><dt><span class="section"><a href="stat_tut/weg/normal_example/normal_misc.html">Some
+ Miscellaneous Examples of the Normal (Gaussian) Distribution</a></span></dt></dl></dd>
+<dt><span class="section"><a href="stat_tut/weg/inverse_chi_squared_eg.html">Inverse
+ Chi-Squared Distribution Bayes Example</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/nccs_eg.html">Non Central Chi
+ Squared Example</a></span></dt>
+<dd><dl><dt><span class="section"><a href="stat_tut/weg/nccs_eg/nccs_power_eg.html">Tables
+ of the power function of the chi<sup>2</sup> test.</a></span></dt></dl></dd>
+<dt><span class="section"><a href="stat_tut/weg/error_eg.html">Error Handling
+ Example</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/find_eg.html">Find Location and
+ Scale Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="stat_tut/weg/find_eg/find_location_eg.html">Find
+ Location (Mean) Example</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/find_eg/find_scale_eg.html">Find
+ Scale (Standard Deviation) Example</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/find_eg/find_mean_and_sd_eg.html">Find
+ mean and standard deviation example</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="stat_tut/weg/nag_library.html">Comparison with
+ C, R, FORTRAN-style Free Functions</a></span></dt>
+<dt><span class="section"><a href="stat_tut/weg/c_sharp.html">Using the Distributions
+ from Within C#</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="stat_tut/variates.html">Random Variates and Distribution
+ Parameters</a></span></dt>
+<dt><span class="section"><a href="stat_tut/dist_params.html">Discrete Probability
+ Distributions</a></span></dt>
+</dl></div>
+<p>
+ This library is centred around statistical distributions, this tutorial will
+ give you an overview of what they are, how they can be used, and provides a
+ few worked examples of applying the library to statistical tests.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../dist.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../dist.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="stat_tut/overview.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/dist_params.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/dist_params.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,90 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Discrete Probability Distributions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../stat_tut.html" title="Statistical Distributions Tutorial">
+<link rel="prev" href="variates.html" title="Random Variates and Distribution Parameters">
+<link rel="next" href="../dist_ref.html" title="Statistical Distributions Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="variates.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stat_tut.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../dist_ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_dist_params">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.stat_tut.dist_params"></a><a class="link" href="dist_params.html" title="Discrete Probability Distributions">Discrete Probability
+ Distributions</a>
+</h3></div></div></div>
+<p>
+ Note that the <a href="http://en.wikipedia.org/wiki/Discrete_probability_distribution" target="_top">discrete
+ distributions</a>, including the binomial, negative binomial, Poisson
+ & Bernoulli, are all mathematically defined as discrete functions: only
+ integral values of the <a href="http://en.wikipedia.org/wiki/Random_variate" target="_top">random
+ variate</a> are envisaged and the functions are only defined at these
+ integral values. However because the method of calculation often uses continuous
+ functions, it is convenient to treat them as if they were continuous functions,
+ and permit non-integral values of their parameters.
+ </p>
+<p>
+ To enforce a strict mathematical model, users may use floor or ceil functions
+ on the random variate,
+ prior to calling the distribution function, to enforce integral values.
+ </p>
+<p>
+ For similar reasons, in continuous distributions, parameters like degrees
+ of freedom that might appear to be integral, are treated as real values (and
+ are promoted from integer to floating-point if necessary). In this case however,
+ that there are a small number of situations where non-integral degrees of
+ freedom do have a genuine meaning.
+ </p>
+<p>
+ Generally speaking there is no loss of performance from allowing real-values
+ parameters: the underlying special functions contain optimizations for integer-valued
+ arguments when applicable.
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The quantile function of a discrete distribution will by default return
+ an integer result that has been <span class="emphasis"><em>rounded outwards</em></span>.
+ That is to say lower quantiles (where the probability is less than 0.5)
+ are rounded downward, and upper quantiles (where the probability is greater
+ than 0.5) are rounded upwards. This behaviour ensures that if an X% quantile
+ is requested, then <span class="emphasis"><em>at least</em></span> the requested coverage
+ will be present in the central region, and <span class="emphasis"><em>no more than</em></span>
+ the requested coverage will be present in the tails.
+ </p>
+<p>
+ This behaviour can be changed so that the quantile functions are rounded
+ differently, or even return a real-valued result using <a class="link" href="../pol_overview.html" title="Policy Overview">Policies</a>.
+ It is strongly recommended that you read the tutorial <a class="link" href="../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a> before using the quantile function
+ on a discrete distribution. The <a class="link" href="../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">reference
+ docs</a> describe how to change the rounding policy for these distributions.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="variates.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stat_tut.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../dist_ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Overview of Distributions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../stat_tut.html" title="Statistical Distributions Tutorial">
+<link rel="prev" href="../stat_tut.html" title="Statistical Distributions Tutorial">
+<link rel="next" href="overview/headers.html" title="Headers and Namespaces">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../stat_tut.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stat_tut.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="overview/headers.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_overview">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.stat_tut.overview"></a><a class="link" href="overview.html" title="Overview of Distributions">Overview of Distributions</a>
+</h3></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="overview/headers.html">Headers and
+ Namespaces</a></span></dt>
+<dt><span class="section"><a href="overview/objects.html">Distributions
+ are Objects</a></span></dt>
+<dt><span class="section"><a href="overview/generic.html">Generic operations
+ common to all distributions are non-member functions</a></span></dt>
+<dt><span class="section"><a href="overview/complements.html">Complements
+ are supported too - and when to use them</a></span></dt>
+<dt><span class="section"><a href="overview/parameters.html">Parameters
+ can be calculated</a></span></dt>
+<dt><span class="section">Summary</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../stat_tut.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stat_tut.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="overview/headers.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/complements.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/complements.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,190 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Complements are supported too - and when to use them</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Overview of Distributions">
+<link rel="prev" href="generic.html" title="Generic operations common to all distributions are non-member functions">
+<link rel="next" href="parameters.html" title="Parameters can be calculated">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="generic.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="parameters.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_overview_complements">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.overview.complements"></a><a class="link" href="complements.html" title="Complements are supported too - and when to use them">Complements
+ are supported too - and when to use them</a>
+</h4></div></div></div>
+<p>
+ Often you don't want the value of the CDF, but its complement, which is
+ to say <code class="computeroutput"><span class="number">1</span><span class="special">-</span><span class="identifier">p</span></code> rather than <code class="computeroutput"><span class="identifier">p</span></code>.
+ It is tempting to calculate the CDF and subtract it from <code class="computeroutput"><span class="number">1</span></code>, but if <code class="computeroutput"><span class="identifier">p</span></code>
+ is very close to <code class="computeroutput"><span class="number">1</span></code> then cancellation
+ error will cause you to lose accuracy, perhaps totally.
+ </p>
+<p>
+ <a class="link" href="complements.html#why_complements">See below <span class="emphasis"><em>"Why and when
+ to use complements?"</em></span></a>
+ </p>
+<p>
+ In this library, whenever you want to receive a complement, just wrap all
+ the function arguments in a call to <code class="computeroutput"><span class="identifier">complement</span><span class="special">(...)</span></code>, for example:
+ </p>
+<pre class="programlisting"><span class="identifier">students_t</span> <span class="identifier">dist</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"CDF at t = 1 is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="number">1.0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Complement of CDF at t = 1 is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="number">1.0</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ But wait, now that we have a complement, we have to be able to use it as
+ well. Any function that accepts a probability as an argument can also accept
+ a complement by wrapping all of its arguments in a call to <code class="computeroutput"><span class="identifier">complement</span><span class="special">(...)</span></code>,
+ for example:
+ </p>
+<pre class="programlisting"><span class="identifier">students_t</span> <span class="identifier">dist</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="number">1e10</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">*=</span> <span class="number">10</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// Calculate the quantile for a 1 in i chance:</span>
+ <span class="keyword">double</span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="number">1</span><span class="special">/</span><span class="identifier">i</span><span class="special">));</span>
+ <span class="comment">// Print it out:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Quantile of students-t with 5 degrees of freedom\n"</span>
+ <span class="string">"for a 1 in "</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="string">" chance is "</span> <span class="special"><<</span> <span class="identifier">t</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ <span class="bold"><strong>Critical values are just quantiles</strong></span>
+ </p>
+<p>
+ Some texts talk about quantiles, or percentiles or fractiles, others
+ about critical values, the basic rule is:
+ </p>
+<p>
+ <span class="emphasis"><em>Lower critical values</em></span> are the same as the quantile.
+ </p>
+<p>
+ <span class="emphasis"><em>Upper critical values</em></span> are the same as the quantile
+ from the complement of the probability.
+ </p>
+<p>
+ For example, suppose we have a Bernoulli process, giving rise to a binomial
+ distribution with success ratio 0.1 and 100 trials in total. The <span class="emphasis"><em>lower
+ critical value</em></span> for a probability of 0.05 is given by:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="number">100</span><span class="special">,</span> <span class="number">0.1</span><span class="special">),</span> <span class="number">0.05</span><span class="special">)</span></code>
+ </p>
+<p>
+ and the <span class="emphasis"><em>upper critical value</em></span> is given by:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">binomial</span><span class="special">(</span><span class="number">100</span><span class="special">,</span> <span class="number">0.1</span><span class="special">),</span> <span class="number">0.05</span><span class="special">))</span></code>
+ </p>
+<p>
+ which return 4.82 and 14.63 respectively.
+ </p>
+</td></tr>
+</table></div>
+<a name="why_complements"></a><div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ <span class="bold"><strong>Why bother with complements anyway?</strong></span>
+ </p>
+<p>
+ It's very tempting to dispense with complements, and simply subtract
+ the probability from 1 when required. However, consider what happens
+ when the probability is very close to 1: let's say the probability expressed
+ at float precision is <code class="computeroutput"><span class="number">0.999999940f</span></code>,
+ then <code class="computeroutput"><span class="number">1</span> <span class="special">-</span>
+ <span class="number">0.999999940f</span> <span class="special">=</span>
+ <span class="number">5.96046448e-008</span></code>, but the result
+ is actually accurate to just <span class="emphasis"><em>one single bit</em></span>: the
+ only bit that didn't cancel out!
+ </p>
+<p>
+ Or to look at this another way: consider that we want the risk of falsely
+ rejecting the null-hypothesis in the Student's t test to be 1 in 1 billion,
+ for a sample size of 10,000. This gives a probability of 1 - 10<sup>-9</sup>, which
+ is exactly 1 when calculated at float precision. In this case calculating
+ the quantile from the complement neatly solves the problem, so for example:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">students_t</span><span class="special">(</span><span class="number">10000</span><span class="special">),</span> <span class="number">1e-9</span><span class="special">))</span></code>
+ </p>
+<p>
+ returns the expected t-statistic <code class="computeroutput"><span class="number">6.00336</span></code>,
+ where as:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">students_t</span><span class="special">(</span><span class="number">10000</span><span class="special">),</span> <span class="number">1</span><span class="special">-</span><span class="number">1e-9f</span><span class="special">)</span></code>
+ </p>
+<p>
+ raises an overflow error, since it is the same as:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">students_t</span><span class="special">(</span><span class="number">10000</span><span class="special">),</span> <span class="number">1</span><span class="special">)</span></code>
+ </p>
+<p>
+ Which has no finite result.
+ </p>
+<p>
+ With all distributions, even for more reasonable probability (unless
+ the value of p can be represented exactly in the floating-point type)
+ the loss of accuracy quickly becomes significant if you simply calculate
+ probability from 1 - p (because it will be mostly garbage digits for
+ p ~ 1).
+ </p>
+<p>
+ So always avoid, for example, using a probability near to unity like
+ 0.99999
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">my_distribution</span><span class="special">,</span>
+ <span class="number">0.99999</span><span class="special">)</span></code>
+ </p>
+<p>
+ and instead use
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">my_distribution</span><span class="special">,</span>
+ <span class="number">0.00001</span><span class="special">))</span></code>
+ </p>
+<p>
+ since 1 - 0.99999 is not exactly equal to 0.00001 when using floating-point
+ arithmetic.
+ </p>
+<p>
+ This assumes that the 0.00001 value is either a constant, or can be computed
+ by some manner other than subtracting 0.99999 from 1.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="generic.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="parameters.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/generic.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/generic.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,244 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Generic operations common to all distributions are non-member functions</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Overview of Distributions">
+<link rel="prev" href="objects.html" title="Distributions are Objects">
+<link rel="next" href="complements.html" title="Complements are supported too - and when to use them">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="objects.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="complements.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_overview_generic">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.overview.generic"></a><a class="link" href="generic.html" title="Generic operations common to all distributions are non-member functions">Generic operations
+ common to all distributions are non-member functions</a>
+</h4></div></div></div>
+<p>
+ Want to calculate the PDF (Probability Density Function) of a distribution?
+ No problem, just use:
+ </p>
+<pre class="programlisting"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">my_dist</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// Returns PDF (density) at point x of distribution my_dist.</span>
+</pre>
+<p>
+ Or how about the CDF (Cumulative Distribution Function):
+ </p>
+<pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">my_dist</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// Returns CDF (integral from -infinity to point x)</span>
+ <span class="comment">// of distribution my_dist.</span>
+</pre>
+<p>
+ And quantiles are just the same:
+ </p>
+<pre class="programlisting"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">my_dist</span><span class="special">,</span> <span class="identifier">p</span><span class="special">);</span> <span class="comment">// Returns the value of the random variable x</span>
+ <span class="comment">// such that cdf(my_dist, x) == p.</span>
+</pre>
+<p>
+ If you're wondering why these aren't member functions, it's to make the
+ library more easily extensible: if you want to add additional generic operations
+ - let's say the <span class="emphasis"><em>n'th moment</em></span> - then all you have to
+ do is add the appropriate non-member functions, overloaded for each implemented
+ distribution type.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ <span class="bold"><strong>Random numbers that approximate Quantiles of Distributions</strong></span>
+ </p>
+<p>
+ If you want random numbers that are distributed in a specific way, for
+ example in a uniform, normal or triangular, see Boost.Random.
+ </p>
+<p>
+ Whilst in principal there's nothing to prevent you from using the quantile
+ function to convert a uniformly distributed random number to another
+ distribution, in practice there are much more efficient algorithms available
+ that are specific to random number generation.
+ </p>
+</td></tr>
+</table></div>
+<p>
+ For example, the binomial distribution has two parameters: n (the number
+ of trials) and p (the probability of success on any one trial).
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">binomial_distribution</span></code>
+ constructor therefore has two parameters:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">RealType</span>
+ <span class="identifier">p</span><span class="special">);</span></code>
+ </p>
+<p>
+ For this distribution the <a href="http://en.wikipedia.org/wiki/Random_variate" target="_top">random
+ variate</a> is k: the number of successes observed. The probability
+ density/mass function (pdf) is therefore written as <span class="emphasis"><em>f(k; n, p)</em></span>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ <span class="bold"><strong>Random Variates and Distribution Parameters</strong></span>
+ </p>
+<p>
+ The concept of a <a href="http://en.wikipedia.org/wiki/Random_variable" target="_top">random
+ variable</a> is closely linked to the term <a href="http://en.wikipedia.org/wiki/Random_variate" target="_top">random
+ variate</a>: a random variate is a particular value (outcome) of
+ a random variable. and <a href="http://en.wikipedia.org/wiki/Parameter" target="_top">distribution
+ parameters</a> are conventionally distinguished (for example in Wikipedia
+ and Wolfram MathWorld) by placing a semi-colon or vertical bar) <span class="emphasis"><em>after</em></span>
+ the <a href="http://en.wikipedia.org/wiki/Random_variable" target="_top">random
+ variable</a> (whose value you 'choose'), to separate the variate
+ from the parameter(s) that defines the shape of the distribution.<br>
+ For example, the binomial distribution probability distribution function
+ (PDF) is written as <span class="emphasis"><em>f(k| n, p)</em></span> = Pr(K = k|n, p)
+ = probability of observing k successes out of n trials. K is the random variable,
+ k is the <a href="http://en.wikipedia.org/wiki/Random_variate" target="_top">random
+ variate</a>, the parameters are n (trials) and p (probability).
+ </p>
+</td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ By convention, <a href="http://en.wikipedia.org/wiki/Random_variate" target="_top">random
+ variate</a> are lower case, usually k is integral, x if real, and
+ random variable
+ are upper case, K if integral, X if real. But this implementation treats
+ all as floating point values <code class="computeroutput"><span class="identifier">RealType</span></code>,
+ so if you really want an integral result, you must round: see note on
+ Discrete Probability Distributions below for details.
+ </p></td></tr>
+</table></div>
+<p>
+ As noted above the non-member function <code class="computeroutput"><span class="identifier">pdf</span></code>
+ has one parameter for the distribution object, and a second for the random
+ variate. So taking our binomial distribution example, we would write:
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>(</span><span class="identifier">n</span><span class="special">,</span> <span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">);</span></code>
+ </p>
+<p>
+ The ranges of <a href="http://en.wikipedia.org/wiki/Random_variate" target="_top">random
+ variate</a> values that are permitted and are supported can be tested
+ by using two functions <code class="computeroutput"><span class="identifier">range</span></code>
+ and <code class="computeroutput"><span class="identifier">support</span></code>.
+ </p>
+<p>
+ The distribution (effectively the <a href="http://en.wikipedia.org/wiki/Random_variate" target="_top">random
+ variate</a>) is said to be 'supported' over a range that is <a href="http://en.wikipedia.org/wiki/Probability_distribution" target="_top">"the smallest
+ closed set whose complement has probability zero"</a>. MathWorld
+ uses the word 'defined' for this range. Non-mathematicians might say it
+ means the 'interesting' smallest range of random variate x that has the
+ cdf going from zero to unity. Outside are uninteresting zones where the
+ pdf is zero, and the cdf zero or unity.
+ </p>
+<p>
+ For most distributions, with probability distribution functions one might
+ describe as 'well-behaved', we have decided that it is most useful for
+ the supported range to <span class="bold"><strong>exclude</strong></span> random
+ variate values like exact zero <span class="bold"><strong>if the end point is
+ discontinuous</strong></span>. For example, the Weibull (scale 1, shape 1) distribution
+ smoothly heads for unity as the random variate x declines towards zero.
+ But at x = zero, the value of the pdf is suddenly exactly zero, by definition.
+ If you are plotting the PDF, or otherwise calculating, zero is not the
+ most useful value for the lower limit of supported, as we discovered. So
+ for this, and similar distributions, we have decided it is most numerically
+ useful to use the closest value to zero, min_value, for the limit of the
+ supported range. (The <code class="computeroutput"><span class="identifier">range</span></code>
+ remains from zero, so you will still get <code class="computeroutput"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">weibull</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">==</span> <span class="number">0</span></code>).
+ (Exponential and gamma distributions have similarly discontinuous functions).
+ </p>
+<p>
+ Mathematically, the functions may make sense with an (+ or -) infinite
+ value, but except for a few special cases (in the Normal and Cauchy distributions)
+ this implementation limits random variates to finite values from the <code class="computeroutput"><span class="identifier">max</span></code> to <code class="computeroutput"><span class="identifier">min</span></code>
+ for the <code class="computeroutput"><span class="identifier">RealType</span></code>. (See
+ <a class="link" href="../../sf_implementation.html#math_toolkit.sf_implementation.handling_of_floating_point_infin">Handling
+ of Floating-Point Infinity</a> for rationale).
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ <span class="bold"><strong>Discrete Probability Distributions</strong></span>
+ </p>
+<p>
+ Note that the <a href="http://en.wikipedia.org/wiki/Discrete_probability_distribution" target="_top">discrete
+ distributions</a>, including the binomial, negative binomial, Poisson
+ & Bernoulli, are all mathematically defined as discrete functions:
+ that is to say the functions <code class="computeroutput"><span class="identifier">cdf</span></code>
+ and <code class="computeroutput"><span class="identifier">pdf</span></code> are only defined
+ for integral values of the random variate.
+ </p>
+<p>
+ However, because the method of calculation often uses continuous functions
+ it is convenient to treat them as if they were continuous functions,
+ and permit non-integral values of their parameters.
+ </p>
+<p>
+ Users wanting to enforce a strict mathematical model may use <code class="computeroutput"><span class="identifier">floor</span></code> or <code class="computeroutput"><span class="identifier">ceil</span></code>
+ functions on the random variate prior to calling the distribution function.
+ </p>
+<p>
+ The quantile functions for these distributions are hard to specify in
+ a manner that will satisfy everyone all of the time. The default behaviour
+ is to return an integer result, that has been rounded <span class="emphasis"><em>outwards</em></span>:
+ that is to say, lower quantiles - where the probablity is less than 0.5
+ are rounded down, while upper quantiles - where the probability is greater
+ than 0.5 - are rounded up. This behaviour ensures that if an X% quantile
+ is requested, then <span class="emphasis"><em>at least</em></span> the requested coverage
+ will be present in the central region, and <span class="emphasis"><em>no more than</em></span>
+ the requested coverage will be present in the tails.
+ </p>
+<p>
+ This behaviour can be changed so that the quantile functions are rounded
+ differently, or return a real-valued result using <a class="link" href="../../pol_overview.html" title="Policy Overview">Policies</a>.
+ It is strongly recommended that you read the tutorial <a class="link" href="../../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a> before using the quantile
+ function on a discrete distribtion. The <a class="link" href="../../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">reference
+ docs</a> describe how to change the rounding policy for these distributions.
+ </p>
+<p>
+ For similar reasons continuous distributions with parameters like "degrees
+ of freedom" that might appear to be integral, are treated as real
+ values (and are promoted from integer to floating-point if necessary).
+ In this case however, there are a small number of situations where non-integral
+ degrees of freedom do have a genuine meaning.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="objects.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="complements.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/headers.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/headers.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Headers and Namespaces</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Overview of Distributions">
+<link rel="prev" href="../overview.html" title="Overview of Distributions">
+<link rel="next" href="objects.html" title="Distributions are Objects">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../overview.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="objects.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_overview_headers">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.overview.headers"></a><a class="link" href="headers.html" title="Headers and Namespaces">Headers and
+ Namespaces</a>
+</h4></div></div></div>
+<p>
+ All the code in this library is inside namespace boost::math.
+ </p>
+<p>
+ In order to use a distribution <span class="emphasis"><em>my_distribution</em></span> you
+ will need to include either the header <boost/math/my_distribution.hpp>
+ or the "include all the distributions" header: <boost/math/distributions.hpp>.
+ </p>
+<p>
+ For example, to use the Students-t distribution include either <boost/math/students_t.hpp>
+ or <boost/math/distributions.hpp>
+ </p>
+<p>
+ You also need to bring distribution names into scope, perhaps with a <code class="computeroutput"><span class="keyword">using</span> <span class="keyword">namespace</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span></code>
+ declaration,
+ </p>
+<p>
+ or specific <code class="computeroutput"><span class="keyword">using</span></code> declarations
+ like <code class="computeroutput"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal</span><span class="special">;</span></code> (<span class="bold"><strong>recommended</strong></span>).
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Some math function names are also used in namespace std so including
+ <random> could cause ambiguity!
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../overview.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="objects.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/objects.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/objects.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,124 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Distributions are Objects</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Overview of Distributions">
+<link rel="prev" href="headers.html" title="Headers and Namespaces">
+<link rel="next" href="generic.html" title="Generic operations common to all distributions are non-member functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="headers.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="generic.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_overview_objects">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.overview.objects"></a><a class="link" href="objects.html" title="Distributions are Objects">Distributions
+ are Objects</a>
+</h4></div></div></div>
+<p>
+ Each kind of distribution in this library is a class type - an object.
+ </p>
+<p>
+ <a class="link" href="../../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policies</a> provide fine-grained control of
+ the behaviour of these classes, allowing the user to customise behaviour
+ such as how errors are handled, or how the quantiles of discrete distribtions
+ behave.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If you are familiar with statistics libraries using functions, and 'Distributions
+ as Objects' seem alien, see <a class="link" href="../weg/nag_library.html" title="Comparison with C, R, FORTRAN-style Free Functions">the
+ comparison to other statistics libraries.</a>
+ </p></td></tr>
+</table></div>
+<p>
+ Making distributions class types does two things:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ It encapsulates the kind of distribution in the C++ type system; so,
+ for example, Students-t distributions are always a different C++ type
+ from Chi-Squared distributions.
+ </li>
+<li class="listitem">
+ The distribution objects store any parameters associated with the distribution:
+ for example, the Students-t distribution has a <span class="emphasis"><em>degrees of
+ freedom</em></span> parameter that controls the shape of the distribution.
+ This <span class="emphasis"><em>degrees of freedom</em></span> parameter has to be provided
+ to the Students-t object when it is constructed.
+ </li>
+</ul></div>
+<p>
+ Although the distribution classes in this library are templates, there
+ are typedefs on type <span class="emphasis"><em>double</em></span> that mostly take the usual
+ name of the distribution (except where there is a clash with a function
+ of the same name: beta and gamma, in which case using the default template
+ arguments - <code class="computeroutput"><span class="identifier">RealType</span> <span class="special">=</span>
+ <span class="keyword">double</span></code> - is nearly as convenient).
+ Probably 95% of uses are covered by these typedefs:
+ </p>
+<pre class="programlisting"><span class="comment">// using namespace boost::math; // Avoid potential ambiguity with names in std <random></span>
+<span class="comment">// Safer to declare specific functions with using statement(s):</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">beta_distribution</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial_distribution</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">students_t</span><span class="special">;</span>
+
+<span class="comment">// Construct a students_t distribution with 4 degrees of freedom:</span>
+<span class="identifier">students_t</span> <span class="identifier">d1</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
+
+<span class="comment">// Construct a double-precision beta distribution</span>
+<span class="comment">// with parameters a = 10, b = 20</span>
+<span class="identifier">beta_distribution</span><span class="special"><></span> <span class="identifier">d2</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="number">20</span><span class="special">);</span> <span class="comment">// Note: _distribution<> suffix !</span>
+</pre>
+<p>
+ If you need to use the distributions with a type other than <code class="computeroutput"><span class="keyword">double</span></code>, then you can instantiate the template
+ directly: the names of the templates are the same as the <code class="computeroutput"><span class="keyword">double</span></code> typedef but with <code class="computeroutput"><span class="identifier">_distribution</span></code>
+ appended, for example: <a class="link" href="../../dist_ref/dists/students_t_dist.html" title="Students t Distribution">Students
+ t Distribution</a> or <a class="link" href="../../dist_ref/dists/binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</a>:
+ </p>
+<pre class="programlisting"><span class="comment">// Construct a students_t distribution, of float type,</span>
+<span class="comment">// with 4 degrees of freedom:</span>
+<span class="identifier">students_t_distribution</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="identifier">d3</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
+
+<span class="comment">// Construct a binomial distribution, of long double type,</span>
+<span class="comment">// with probability of success 0.3</span>
+<span class="comment">// and 20 trials in total:</span>
+<span class="identifier">binomial_distribution</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="identifier">d4</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">0.3</span><span class="special">);</span>
+</pre>
+<p>
+ The parameters passed to the distributions can be accessed via getter member
+ functions:
+ </p>
+<pre class="programlisting"><span class="identifier">d1</span><span class="special">.</span><span class="identifier">degrees_of_freedom</span><span class="special">();</span> <span class="comment">// returns 4.0</span>
+</pre>
+<p>
+ This is all well and good, but not very useful so far. What we often want
+ is to be able to calculate the <span class="emphasis"><em>cumulative distribution functions</em></span>
+ and <span class="emphasis"><em>quantiles</em></span> etc for these distributions.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="headers.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="generic.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/parameters.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/parameters.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Parameters can be calculated</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Overview of Distributions">
+<link rel="prev" href="complements.html" title="Complements are supported too - and when to use them">
+<link rel="next" href="summary.html" title="Summary">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="complements.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="summary.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_overview_parameters">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.overview.parameters"></a><a class="link" href="parameters.html" title="Parameters can be calculated">Parameters
+ can be calculated</a>
+</h4></div></div></div>
+<p>
+ Sometimes it's the parameters that define the distribution that you need
+ to find. Suppose, for example, you have conducted a Students-t test for
+ equal means and the result is borderline. Maybe your two samples differ
+ from each other, or maybe they don't; based on the result of the test you
+ can't be sure. A legitimate question to ask then is "How many more
+ measurements would I have to take before I would get an X% probability
+ that the difference is real?" Parameter finders can answer questions
+ like this, and are necessarily different for each distribution. They are
+ implemented as static member functions of the distributions, for example:
+ </p>
+<pre class="programlisting"><span class="identifier">students_t</span><span class="special">::</span><span class="identifier">find_degrees_of_freedom</span><span class="special">(</span>
+ <span class="number">1.3</span><span class="special">,</span> <span class="comment">// difference from true mean to detect</span>
+ <span class="number">0.05</span><span class="special">,</span> <span class="comment">// maximum risk of falsely rejecting the null-hypothesis.</span>
+ <span class="number">0.1</span><span class="special">,</span> <span class="comment">// maximum risk of falsely failing to reject the null-hypothesis.</span>
+ <span class="number">0.13</span><span class="special">);</span> <span class="comment">// sample standard deviation</span>
+</pre>
+<p>
+ Returns the number of degrees of freedom required to obtain a 95% probability
+ that the observed differences in means is not down to chance alone. In
+ the case that a borderline Students-t test result was previously obtained,
+ this can be used to estimate how large the sample size would have to become
+ before the observed difference was considered significant. It assumes,
+ of course, that the sample mean and standard deviation are invariant with
+ sample size.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="complements.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="summary.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/summary.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/overview/summary.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Summary</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Overview of Distributions">
+<link rel="prev" href="parameters.html" title="Parameters can be calculated">
+<link rel="next" href="../weg.html" title="Worked Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="parameters.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../weg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_overview_summary">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.overview.summary"></a><a class="link" href="summary.html" title="Summary">Summary</a>
+</h4></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Distributions are objects, which are constructed from whatever parameters
+ the distribution may have.
+ </li>
+<li class="listitem">
+ Member functions allow you to retrieve the parameters of a distribution.
+ </li>
+<li class="listitem">
+ Generic non-member functions provide access to the properties that
+ are common to all the distributions (PDF, CDF, quantile etc).
+ </li>
+<li class="listitem">
+ Complements of probabilities are calculated by wrapping the function's
+ arguments in a call to <code class="computeroutput"><span class="identifier">complement</span><span class="special">(...)</span></code>.
+ </li>
+<li class="listitem">
+ Functions that accept a probability can accept a complement of the
+ probability as well, by wrapping the function's arguments in a call
+ to <code class="computeroutput"><span class="identifier">complement</span><span class="special">(...)</span></code>.
+ </li>
+<li class="listitem">
+ Static member functions allow the parameters of a distribution to be
+ found from other information.
+ </li>
+</ul></div>
+<p>
+ Now that you have the basics, the next section looks at some worked examples.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="parameters.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../weg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/variates.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/variates.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Random Variates and Distribution Parameters</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../stat_tut.html" title="Statistical Distributions Tutorial">
+<link rel="prev" href="weg/c_sharp.html" title="Using the Distributions from Within C#">
+<link rel="next" href="dist_params.html" title="Discrete Probability Distributions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="weg/c_sharp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stat_tut.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="dist_params.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_variates">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.stat_tut.variates"></a><a class="link" href="variates.html" title="Random Variates and Distribution Parameters">Random Variates and Distribution
+ Parameters</a>
+</h3></div></div></div>
+<p>
+ Random variates
+ and distribution parameters
+ are conventionally distinguished (for example in Wikipedia and Wolfram MathWorld
+ by placing a semi-colon after the <a href="http://en.wikipedia.org/wiki/Random_variate" target="_top">random
+ variate</a> (whose value you 'choose'), to separate the variate from
+ the parameter(s) that defines the shape of the distribution.
+ </p>
+<p>
+ For example, the binomial distribution has two parameters: n (the number
+ of trials) and p (the probability of success on one trial). It also has the
+ random variate
+ <span class="emphasis"><em>k</em></span>: the number of successes observed. This means the
+ probability density/mass function (pdf) is written as <span class="emphasis"><em>f(k; n, p)</em></span>.
+ </p>
+<p>
+ Translating this into code the <code class="computeroutput"><span class="identifier">binomial_distribution</span></code>
+ constructor therefore has two parameters:
+ </p>
+<pre class="programlisting"><span class="identifier">binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ While the function <code class="computeroutput"><span class="identifier">pdf</span></code> has
+ one argument specifying the distribution type (which includes its parameters,
+ if any), and a second argument for the <a href="http://en.wikipedia.org/wiki/Random_variate" target="_top">random
+ variate</a>. So taking our binomial distribution example, we would write:
+ </p>
+<pre class="programlisting"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">binomial_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>(</span><span class="identifier">n</span><span class="special">,</span> <span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">);</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="weg/c_sharp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stat_tut.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="dist_params.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,119 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Worked Examples</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../stat_tut.html" title="Statistical Distributions Tutorial">
+<link rel="prev" href="overview/summary.html" title="Summary">
+<link rel="next" href="weg/dist_construct_eg.html" title="Distribution Construction Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="overview/summary.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stat_tut.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="weg/dist_construct_eg.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.stat_tut.weg"></a><a class="link" href="weg.html" title="Worked Examples">Worked Examples</a>
+</h3></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="weg/dist_construct_eg.html">Distribution
+ Construction Examples</a></span></dt>
+<dt><span class="section"><a href="weg/st_eg.html">Student's t Distribution
+ Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="weg/st_eg/tut_mean_intervals.html">Calculating
+ confidence intervals on the mean with the Students-t distribution</a></span></dt>
+<dt><span class="section"><a href="weg/st_eg/tut_mean_test.html">Testing
+ a sample mean for difference from a "true" mean</a></span></dt>
+<dt><span class="section"><a href="weg/st_eg/tut_mean_size.html">Estimating
+ how large a sample size would have to become in order to give a significant
+ Students-t test result with a single sample test</a></span></dt>
+<dt><span class="section"><a href="weg/st_eg/two_sample_students_t.html">Comparing
+ the means of two samples with the Students-t test</a></span></dt>
+<dt><span class="section"><a href="weg/st_eg/paired_st.html">Comparing
+ two paired samples with the Student's t distribution</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="weg/cs_eg.html">Chi Squared Distribution
+ Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="weg/cs_eg/chi_sq_intervals.html">Confidence
+ Intervals on the Standard Deviation</a></span></dt>
+<dt><span class="section"><a href="weg/cs_eg/chi_sq_test.html">Chi-Square
+ Test for the Standard Deviation</a></span></dt>
+<dt><span class="section"><a href="weg/cs_eg/chi_sq_size.html">Estimating
+ the Required Sample Sizes for a Chi-Square Test for the Standard Deviation</a></span></dt>
+</dl></dd>
+<dt><span class="section">F Distribution Examples</span></dt>
+<dt><span class="section"><a href="weg/binom_eg.html">Binomial Distribution
+ Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="weg/binom_eg/binomial_coinflip_example.html">Binomial
+ Coin-Flipping Example</a></span></dt>
+<dt><span class="section"><a href="weg/binom_eg/binomial_quiz_example.html">Binomial
+ Quiz Example</a></span></dt>
+<dt><span class="section"><a href="weg/binom_eg/binom_conf.html">Calculating
+ Confidence Limits on the Frequency of Occurrence for a Binomial Distribution</a></span></dt>
+<dt><span class="section"><a href="weg/binom_eg/binom_size_eg.html">Estimating
+ Sample Sizes for a Binomial Distribution.</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="weg/geometric_eg.html">Geometric Distribution
+ Examples</a></span></dt>
+<dt><span class="section"><a href="weg/neg_binom_eg.html">Negative Binomial
+ Distribution Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="weg/neg_binom_eg/neg_binom_conf.html">Calculating
+ Confidence Limits on the Frequency of Occurrence for the Negative Binomial
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="weg/neg_binom_eg/neg_binom_size_eg.html">Estimating
+ Sample Sizes for the Negative Binomial.</a></span></dt>
+<dt><span class="section"><a href="weg/neg_binom_eg/negative_binomial_example1.html">Negative
+ Binomial Sales Quota Example.</a></span></dt>
+<dt><span class="section"><a href="weg/neg_binom_eg/negative_binomial_example2.html">Negative
+ Binomial Table Printing Example.</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="weg/normal_example.html">Normal Distribution
+ Examples</a></span></dt>
+<dd><dl><dt><span class="section"><a href="weg/normal_example/normal_misc.html">Some
+ Miscellaneous Examples of the Normal (Gaussian) Distribution</a></span></dt></dl></dd>
+<dt><span class="section"><a href="weg/inverse_chi_squared_eg.html">Inverse
+ Chi-Squared Distribution Bayes Example</a></span></dt>
+<dt><span class="section"><a href="weg/nccs_eg.html">Non Central Chi
+ Squared Example</a></span></dt>
+<dd><dl><dt><span class="section"><a href="weg/nccs_eg/nccs_power_eg.html">Tables
+ of the power function of the chi<sup>2</sup> test.</a></span></dt></dl></dd>
+<dt><span class="section"><a href="weg/error_eg.html">Error Handling
+ Example</a></span></dt>
+<dt><span class="section"><a href="weg/find_eg.html">Find Location and
+ Scale Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="weg/find_eg/find_location_eg.html">Find
+ Location (Mean) Example</a></span></dt>
+<dt><span class="section"><a href="weg/find_eg/find_scale_eg.html">Find
+ Scale (Standard Deviation) Example</a></span></dt>
+<dt><span class="section"><a href="weg/find_eg/find_mean_and_sd_eg.html">Find
+ mean and standard deviation example</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="weg/nag_library.html">Comparison with
+ C, R, FORTRAN-style Free Functions</a></span></dt>
+<dt><span class="section"><a href="weg/c_sharp.html">Using the Distributions
+ from Within C#</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="overview/summary.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stat_tut.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="weg/dist_construct_eg.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Binomial Distribution Examples</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="f_eg.html" title="F Distribution Examples">
+<link rel="next" href="binom_eg/binomial_coinflip_example.html" title="Binomial Coin-Flipping Example">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="f_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="binom_eg/binomial_coinflip_example.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_binom_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.binom_eg"></a><a class="link" href="binom_eg.html" title="Binomial Distribution Examples">Binomial Distribution
+ Examples</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="binom_eg/binomial_coinflip_example.html">Binomial
+ Coin-Flipping Example</a></span></dt>
+<dt><span class="section"><a href="binom_eg/binomial_quiz_example.html">Binomial
+ Quiz Example</a></span></dt>
+<dt><span class="section"><a href="binom_eg/binom_conf.html">Calculating
+ Confidence Limits on the Frequency of Occurrence for a Binomial Distribution</a></span></dt>
+<dt><span class="section"><a href="binom_eg/binom_size_eg.html">Estimating
+ Sample Sizes for a Binomial Distribution.</a></span></dt>
+</dl></div>
+<p>
+ See also the reference documentation for the <a class="link" href="../../dist_ref/dists/binomial_dist.html" title="Binomial Distribution">Binomial
+ Distribution</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="f_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="binom_eg/binomial_coinflip_example.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_conf.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_conf.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,231 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../binom_eg.html" title="Binomial Distribution Examples">
+<link rel="prev" href="binomial_quiz_example.html" title="Binomial Quiz Example">
+<link rel="next" href="binom_size_eg.html" title="Estimating Sample Sizes for a Binomial Distribution.">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="binomial_quiz_example.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="binom_size_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_binom_eg_binom_conf">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.binom_eg.binom_conf"></a><a class="link" href="binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution">Calculating
+ Confidence Limits on the Frequency of Occurrence for a Binomial Distribution</a>
+</h5></div></div></div>
+<p>
+ Imagine you have a process that follows a binomial distribution: for
+ each trial conducted, an event either occurs or does it does not, referred
+ to as "successes" and "failures". If, by experiment,
+ you want to measure the frequency with which successes occur, the best
+ estimate is given simply by <span class="emphasis"><em>k</em></span> / <span class="emphasis"><em>N</em></span>,
+ for <span class="emphasis"><em>k</em></span> successes out of <span class="emphasis"><em>N</em></span> trials.
+ However our confidence in that estimate will be shaped by how many trials
+ were conducted, and how many successes were observed. The static member
+ functions <code class="computeroutput"><span class="identifier">binomial_distribution</span><span class="special"><>::</span><span class="identifier">find_lower_bound_on_p</span></code>
+ and <code class="computeroutput"><span class="identifier">binomial_distribution</span><span class="special"><>::</span><span class="identifier">find_upper_bound_on_p</span></code>
+ allow you to calculate the confidence intervals for your estimate of
+ the occurrence frequency.
+ </p>
+<p>
+ The sample program binomial_confidence_limits.cpp
+ illustrates their use. It begins by defining a procedure that will print
+ a table of confidence limits for various degrees of certainty:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</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">binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">void</span> <span class="identifier">confidence_limits_on_frequency</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">trials</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">successes</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">//</span>
+ <span class="comment">// trials = Total number of trials.</span>
+ <span class="comment">// successes = Total number of observed successes.</span>
+ <span class="comment">//</span>
+ <span class="comment">// Calculate confidence limits for an observed</span>
+ <span class="comment">// frequency of occurrence that follows a binomial</span>
+ <span class="comment">// distribution.</span>
+ <span class="comment">//</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+
+ <span class="comment">// Print out general info:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"___________________________________________\n"</span>
+ <span class="string">"2-Sided Confidence Limits For Success Ratio\n"</span>
+ <span class="string">"___________________________________________\n\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">7</span><span class="special">);</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of Observations"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">trials</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of successes"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">successes</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Sample frequency of occurrence"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="keyword">double</span><span class="special">(</span><span class="identifier">successes</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">trials</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+ The procedure now defines a table of significance levels: these are the
+ probabilities that the true occurrence frequency lies outside the calculated
+ interval:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.25</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">,</span> <span class="number">0.00001</span> <span class="special">};</span>
+</pre>
+<p>
+ Some pretty printing of the table header follows:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n\n"</span>
+ <span class="string">"_______________________________________________________________________\n"</span>
+ <span class="string">"Confidence Lower CP Upper CP Lower JP Upper JP\n"</span>
+ <span class="string">" Value (%) Limit Limit Limit Limit\n"</span>
+ <span class="string">"_______________________________________________________________________\n"</span><span class="special">;</span>
+</pre>
+<p>
+ And now for the important part - the intervals themselves - for each
+ value of <span class="emphasis"><em>alpha</em></span>, we call <code class="computeroutput"><span class="identifier">find_lower_bound_on_p</span></code>
+ and <code class="computeroutput"><span class="identifier">find_lower_upper_on_p</span></code>
+ to obtain lower and upper bounds respectively. Note that since we are
+ calculating a two-sided interval, we must divide the value of alpha in
+ two.
+ </p>
+<p>
+ Please note that calculating two separate <span class="emphasis"><em>single sided bounds</em></span>,
+ each with risk level α  is not the same thing as calculating a two sided
+ interval. Had we calculate two single-sided intervals each with a risk
+ that the true value is outside the interval of α, then:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ The risk that it is less than the lower bound is α.
+ </li></ul></div>
+<p>
+ and
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ The risk that it is greater than the upper bound is also α.
+ </li></ul></div>
+<p>
+ So the risk it is outside <span class="bold"><strong>upper or lower bound</strong></span>,
+ is <span class="bold"><strong>twice</strong></span> alpha, and the probability
+ that it is inside the bounds is therefore not nearly as high as one might
+ have thought. This is why α/2 must be used in the calculations below.
+ </p>
+<p>
+ In contrast, had we been calculating a single-sided interval, for example:
+ <span class="emphasis"><em>"Calculate a lower bound so that we are P% sure that the
+ true occurrence frequency is greater than some value"</em></span>
+ then we would <span class="bold"><strong>not</strong></span> have divided by two.
+ </p>
+<p>
+ Finally note that <code class="computeroutput"><span class="identifier">binomial_distribution</span></code>
+ provides a choice of two methods for the calculation, we print out the
+ results from both methods in this example:
+ </p>
+<pre class="programlisting"> <span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// Confidence value:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="number">100</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+ <span class="comment">// Calculate Clopper Pearson bounds:</span>
+ <span class="keyword">double</span> <span class="identifier">l</span> <span class="special">=</span> <span class="identifier">binomial_distribution</span><span class="special"><>::</span><span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">trials</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]/</span><span class="number">2</span><span class="special">);</span>
+ <span class="keyword">double</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">binomial_distribution</span><span class="special"><>::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">trials</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]/</span><span class="number">2</span><span class="special">);</span>
+ <span class="comment">// Print Clopper Pearson Limits:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">l</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">u</span><span class="special">;</span>
+ <span class="comment">// Calculate Jeffreys Prior Bounds:</span>
+ <span class="identifier">l</span> <span class="special">=</span> <span class="identifier">binomial_distribution</span><span class="special"><>::</span><span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">trials</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]/</span><span class="number">2</span><span class="special">,</span>
+ <span class="identifier">binomial_distribution</span><span class="special"><>::</span><span class="identifier">jeffreys_prior_interval</span><span class="special">);</span>
+ <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">binomial_distribution</span><span class="special"><>::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
+ <span class="identifier">trials</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]/</span><span class="number">2</span><span class="special">,</span>
+ <span class="identifier">binomial_distribution</span><span class="special"><>::</span><span class="identifier">jeffreys_prior_interval</span><span class="special">);</span>
+ <span class="comment">// Print Jeffreys Prior Limits:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">l</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">u</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ And that's all there is to it. Let's see some sample output for a 2 in
+ 10 success ratio, first for 20 trials:
+ </p>
+<pre class="programlisting">___________________________________________
+2-Sided Confidence Limits For Success Ratio
+___________________________________________
+
+Number of Observations = 20
+Number of successes = 4
+Sample frequency of occurrence = 0.2
+
+
+_______________________________________________________________________
+Confidence Lower CP Upper CP Lower JP Upper JP
+ Value (%) Limit Limit Limit Limit
+_______________________________________________________________________
+ 50.000 0.12840 0.29588 0.14974 0.26916
+ 75.000 0.09775 0.34633 0.11653 0.31861
+ 90.000 0.07135 0.40103 0.08734 0.37274
+ 95.000 0.05733 0.43661 0.07152 0.40823
+ 99.000 0.03576 0.50661 0.04655 0.47859
+ 99.900 0.01905 0.58632 0.02634 0.55960
+ 99.990 0.01042 0.64997 0.01530 0.62495
+ 99.999 0.00577 0.70216 0.00901 0.67897
+</pre>
+<p>
+ As you can see, even at the 95% confidence level the bounds are really
+ quite wide (this example is chosen to be easily compared to the one in
+ the <a href="http://www.itl.nist.gov/div898/handbook/" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods.</a> here).
+ Note also that the Clopper-Pearson calculation method (CP above) produces
+ quite noticeably more pessimistic estimates than the Jeffreys Prior method
+ (JP above).
+ </p>
+<p>
+ Compare that with the program output for 2000 trials:
+ </p>
+<pre class="programlisting">___________________________________________
+2-Sided Confidence Limits For Success Ratio
+___________________________________________
+
+Number of Observations = 2000
+Number of successes = 400
+Sample frequency of occurrence = 0.2000000
+
+
+_______________________________________________________________________
+Confidence Lower CP Upper CP Lower JP Upper JP
+ Value (%) Limit Limit Limit Limit
+_______________________________________________________________________
+ 50.000 0.19382 0.20638 0.19406 0.20613
+ 75.000 0.18965 0.21072 0.18990 0.21047
+ 90.000 0.18537 0.21528 0.18561 0.21503
+ 95.000 0.18267 0.21821 0.18291 0.21796
+ 99.000 0.17745 0.22400 0.17769 0.22374
+ 99.900 0.17150 0.23079 0.17173 0.23053
+ 99.990 0.16658 0.23657 0.16681 0.23631
+ 99.999 0.16233 0.24169 0.16256 0.24143
+</pre>
+<p>
+ Now even when the confidence level is very high, the limits are really
+ quite close to the experimentally calculated value of 0.2. Furthermore
+ the difference between the two calculation methods is now really quite
+ small.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="binomial_quiz_example.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="binom_size_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_size_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_size_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,150 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Estimating Sample Sizes for a Binomial Distribution.</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../binom_eg.html" title="Binomial Distribution Examples">
+<link rel="prev" href="binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution">
+<link rel="next" href="../geometric_eg.html" title="Geometric Distribution Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="binom_conf.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../geometric_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_binom_eg_binom_size_eg">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.binom_eg.binom_size_eg"></a><a class="link" href="binom_size_eg.html" title="Estimating Sample Sizes for a Binomial Distribution.">Estimating
+ Sample Sizes for a Binomial Distribution.</a>
+</h5></div></div></div>
+<p>
+ Imagine you have a critical component that you know will fail in 1 in
+ N "uses" (for some suitable definition of "use").
+ You may want to schedule routine replacement of the component so that
+ its chance of failure between routine replacements is less than P%. If
+ the failures follow a binomial distribution (each time the component
+ is "used" it either fails or does not) then the static member
+ function <code class="computeroutput"><span class="identifier">binomial_distibution</span><span class="special"><>::</span><span class="identifier">find_maximum_number_of_trials</span></code>
+ can be used to estimate the maximum number of "uses" of that
+ component for some acceptable risk level <span class="emphasis"><em>alpha</em></span>.
+ </p>
+<p>
+ The example program binomial_sample_sizes.cpp
+ demonstrates its usage. It centres on a routine that prints out a table
+ of maximum sample sizes for various probability thresholds:
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">find_max_sample_size</span><span class="special">(</span>
+ <span class="keyword">double</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success ratio.</span>
+ <span class="keyword">unsigned</span> <span class="identifier">successes</span><span class="special">)</span> <span class="comment">// Total number of observed successes permitted.</span>
+<span class="special">{</span>
+</pre>
+<p>
+ The routine then declares a table of probability thresholds: these are
+ the maximum acceptable probability that <span class="emphasis"><em>successes</em></span>
+ or fewer events will be observed. In our example, <span class="emphasis"><em>successes</em></span>
+ will be always zero, since we want no component failures, but in other
+ situations non-zero values may well make sense.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.25</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">,</span> <span class="number">0.00001</span> <span class="special">};</span>
+</pre>
+<p>
+ Much of the rest of the program is pretty-printing, the important part
+ is in the calculation of maximum number of permitted trials for each
+ value of alpha:
+ </p>
+<pre class="programlisting"><span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// Confidence value:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="number">100</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+ <span class="comment">// calculate trials:</span>
+ <span class="keyword">double</span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">binomial</span><span class="special">::</span><span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span>
+ <span class="identifier">successes</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+ <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">floor</span><span class="special">(</span><span class="identifier">t</span><span class="special">);</span>
+ <span class="comment">// Print Trials:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">t</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Note that since we're calculating the maximum number of trials permitted,
+ we'll err on the safe side and take the floor of the result. Had we been
+ calculating the <span class="emphasis"><em>minimum</em></span> number of trials required
+ to observe a certain number of <span class="emphasis"><em>successes</em></span> using
+ <code class="computeroutput"><span class="identifier">find_minimum_number_of_trials</span></code>
+ we would have taken the ceiling instead.
+ </p>
+<p>
+ We'll finish off by looking at some sample output, firstly for a 1 in
+ 1000 chance of component failure with each use:
+ </p>
+<pre class="programlisting">________________________
+Maximum Number of Trials
+________________________
+
+Success ratio = 0.001
+Maximum Number of "successes" permitted = 0
+
+
+____________________________
+Confidence Max Number
+ Value (%) Of Trials
+____________________________
+ 50.000 692
+ 75.000 287
+ 90.000 105
+ 95.000 51
+ 99.000 10
+ 99.900 0
+ 99.990 0
+ 99.999 0
+</pre>
+<p>
+ So 51 "uses" of the component would yield a 95% chance that
+ no component failures would be observed.
+ </p>
+<p>
+ Compare that with a 1 in 1 million chance of component failure:
+ </p>
+<pre class="programlisting">________________________
+Maximum Number of Trials
+________________________
+
+Success ratio = 0.0000010
+Maximum Number of "successes" permitted = 0
+
+
+____________________________
+Confidence Max Number
+ Value (%) Of Trials
+____________________________
+ 50.000 693146
+ 75.000 287681
+ 90.000 105360
+ 95.000 51293
+ 99.000 10050
+ 99.900 1000
+ 99.990 100
+ 99.999 10
+</pre>
+<p>
+ In this case, even 1000 uses of the component would still yield a less
+ than 1 in 1000 chance of observing a component failure (i.e. a 99.9%
+ chance of no failure).
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="binom_conf.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../geometric_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,264 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Binomial Coin-Flipping Example</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../binom_eg.html" title="Binomial Distribution Examples">
+<link rel="prev" href="../binom_eg.html" title="Binomial Distribution Examples">
+<link rel="next" href="binomial_quiz_example.html" title="Binomial Quiz Example">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../binom_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="binomial_quiz_example.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_binom_eg_binomial_coinflip_example">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.binom_eg.binomial_coinflip_example"></a><a class="link" href="binomial_coinflip_example.html" title="Binomial Coin-Flipping Example">Binomial
+ Coin-Flipping Example</a>
+</h5></div></div></div>
+<p>
+ An example of a <a href="http://en.wikipedia.org/wiki/Bernoulli_process" target="_top">Bernoulli
+ process</a> is coin flipping. A variable in such a sequence may be
+ called a Bernoulli variable.
+ </p>
+<p>
+ This example shows using the Binomial distribution to predict the probability
+ of heads and tails when throwing a coin.
+ </p>
+<p>
+ The number of correct answers (say heads), X, is distributed as a binomial
+ random variable with binomial distribution parameters number of trials
+ (flips) n = 10 and probability (success_fraction) of getting a head p
+ = 0.5 (a 'fair' coin).
+ </p>
+<p>
+ (Our coin is assumed fair, but we could easily change the success_fraction
+ parameter p from 0.5 to some other value to simulate an unfair coin,
+ say 0.6 for one with chewing gum on the tail, so it is more likely to
+ fall tails down and heads up).
+ </p>
+<p>
+ First we need some includes and using statements to be able to use the
+ binomial distribution, some std input and output, and get started:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Using Binomial distribution to predict how many heads and tails."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">try</span>
+ <span class="special">{</span>
+</pre>
+<p>
+ See note <a class="link" href="binomial_coinflip_example.html#coinflip_eg_catch">with the catch block</a>
+ about why a try and catch block is always a good idea.
+ </p>
+<p>
+ First, construct a binomial distribution with parameters success_fraction
+ 1/2, and how many flips.
+ </p>
+<pre class="programlisting"><span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">success_fraction</span> <span class="special">=</span> <span class="number">0.5</span><span class="special">;</span> <span class="comment">// = 50% = 1/2 for a 'fair' coin.</span>
+<span class="keyword">int</span> <span class="identifier">flips</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
+<span class="identifier">binomial</span> <span class="identifier">flip</span><span class="special">(</span><span class="identifier">flips</span><span class="special">,</span> <span class="identifier">success_fraction</span><span class="special">);</span>
+
+<span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
+</pre>
+<p>
+ Then some examples of using Binomial moments (and echoing the parameters).
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"From "</span> <span class="special"><<</span> <span class="identifier">flips</span> <span class="special"><<</span> <span class="string">" one can expect to get on average "</span>
+ <span class="special"><<</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">flip</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" heads (or tails)."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Mode is "</span> <span class="special"><<</span> <span class="identifier">mode</span><span class="special">(</span><span class="identifier">flip</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard deviation is "</span> <span class="special"><<</span> <span class="identifier">standard_deviation</span><span class="special">(</span><span class="identifier">flip</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"So about 2/3 will lie within 1 standard deviation and get between "</span>
+ <span class="special"><<</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">mean</span><span class="special">(</span><span class="identifier">flip</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">standard_deviation</span><span class="special">(</span><span class="identifier">flip</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" and "</span>
+ <span class="special"><<</span> <span class="identifier">floor</span><span class="special">(</span><span class="identifier">mean</span><span class="special">(</span><span class="identifier">flip</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">standard_deviation</span><span class="special">(</span><span class="identifier">flip</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" correct."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Skewness is "</span> <span class="special"><<</span> <span class="identifier">skewness</span><span class="special">(</span><span class="identifier">flip</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Skewness of binomial distributions is only zero (symmetrical)</span>
+<span class="comment">// if success_fraction is exactly one half,</span>
+<span class="comment">// for example, when flipping 'fair' coins.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Skewness if success_fraction is "</span> <span class="special"><<</span> <span class="identifier">flip</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">skewness</span><span class="special">(</span><span class="identifier">flip</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Expect zero for a 'fair' coin.</span>
+</pre>
+<p>
+ Now we show a variety of predictions on the probability of heads:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"For "</span> <span class="special"><<</span> <span class="identifier">flip</span><span class="special">.</span><span class="identifier">trials</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" coin flips: "</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting no heads is "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting at least one head is "</span> <span class="special"><<</span> <span class="number">1.</span> <span class="special">-</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ When we want to calculate the probability for a range or values we can
+ sum the PDF's:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting 0 or 1 heads is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// sum of exactly == probabilities</span>
+</pre>
+<p>
+ Or we can use the cdf.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting 0 or 1 (<= 1) heads is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting 9 or 10 heads is "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">9</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Note that using
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting 9 or 10 heads is "</span> <span class="special"><<</span> <span class="number">1.</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">8</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ is less accurate than using the complement
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting 9 or 10 heads is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">8</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Since the subtraction may involve <a href="http://docs.sun.com/source/806-3568/ncg_goldberg.html" target="_top">cancellation
+ error</a>, where as <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">8</span><span class="special">))</span></code>
+ does not use such a subtraction internally, and so does not exhibit the
+ problem.
+ </p>
+<p>
+ To get the probability for a range of heads, we can either add the pdfs
+ for each number of heads
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of between 4 and 6 heads (4 or 5 or 6) is "</span>
+ <span class="comment">// P(X == 4) + P(X == 5) + P(X == 6)</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">4</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">5</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">6</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ But this is probably less efficient than using the cdf
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of between 4 and 6 heads (4 or 5 or 6) is "</span>
+ <span class="comment">// P(X <= 6) - P(X <= 3) == P(X < 4)</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">6</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Certainly for a bigger range like, 3 to 7
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of between 3 and 7 heads (3, 4, 5, 6 or 7) is "</span>
+ <span class="comment">// P(X <= 7) - P(X <= 2) == P(X < 3)</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">7</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Finally, print two tables of probability for the <span class="emphasis"><em>exactly</em></span>
+ and <span class="emphasis"><em>at least</em></span> a number of heads.
+ </p>
+<pre class="programlisting"><span class="comment">// Print a table of probability for the exactly a number of heads.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting exactly (==) heads"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">successes</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">successes</span> <span class="special"><=</span> <span class="identifier">flips</span><span class="special">;</span> <span class="identifier">successes</span><span class="special">++)</span>
+<span class="special">{</span> <span class="comment">// Say success means getting a head (or equally success means getting a tail).</span>
+ <span class="keyword">double</span> <span class="identifier">probability</span> <span class="special">=</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">);</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">successes</span> <span class="special"><<</span> <span class="string">" "</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">probability</span> <span class="special"><<</span> <span class="string">" or 1 in "</span> <span class="special"><<</span> <span class="number">1.</span> <span class="special">/</span> <span class="identifier">probability</span>
+ <span class="special"><<</span> <span class="string">", or "</span> <span class="special"><<</span> <span class="identifier">probability</span> <span class="special">*</span> <span class="number">100.</span> <span class="special"><<</span> <span class="string">"%"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// for i</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="comment">// Tabulate the probability of getting between zero heads and 0 upto 10 heads.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting upto (<=) heads"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">successes</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">successes</span> <span class="special"><=</span> <span class="identifier">flips</span><span class="special">;</span> <span class="identifier">successes</span><span class="special">++)</span>
+<span class="special">{</span> <span class="comment">// Say success means getting a head</span>
+ <span class="comment">// (equally success could mean getting a tail).</span>
+ <span class="keyword">double</span> <span class="identifier">probability</span> <span class="special">=</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">flip</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">);</span> <span class="comment">// P(X <= heads)</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">successes</span> <span class="special"><<</span> <span class="string">" "</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span>
+ <span class="special"><<</span> <span class="identifier">probability</span> <span class="special"><<</span> <span class="string">" or 1 in "</span> <span class="special"><<</span> <span class="number">1.</span> <span class="special">/</span> <span class="identifier">probability</span> <span class="special"><<</span> <span class="string">", or "</span>
+ <span class="special"><<</span> <span class="identifier">probability</span> <span class="special">*</span> <span class="number">100.</span> <span class="special"><<</span> <span class="string">"%"</span><span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// for i</span>
+</pre>
+<p>
+ The last (0 to 10 heads) must, of course, be 100% probability.
+ </p>
+<pre class="programlisting"><span class="special">}</span>
+<span class="keyword">catch</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">&</span> <span class="identifier">e</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">//</span>
+</pre>
+<p>
+ <a name="coinflip_eg_catch"></a>It is always essential to include try
+ & catch blocks because default policies are to throw exceptions on
+ arguments that are out of domain or cause errors like numeric-overflow.
+ </p>
+<p>
+ Lacking try & catch blocks, the program will abort, whereas the message
+ below from the thrown exception will give some helpful clues as to the
+ cause of the problem.
+ </p>
+<pre class="programlisting"> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"\n"</span><span class="string">"Message from thrown exception was:\n "</span> <span class="special"><<</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ See binomial_coinflip_example.cpp
+ for full source code, the program output looks like this:
+ </p>
+<pre class="programlisting">Using Binomial distribution to predict how many heads and tails.
+From 10 one can expect to get on average 5 heads (or tails).
+Mode is 5
+Standard deviation is 1.581
+So about 2/3 will lie within 1 standard deviation and get between 4 and 6 correct.
+Skewness is 0
+Skewness if success_fraction is 0.5 is 0
+
+For 10 coin flips:
+Probability of getting no heads is 0.0009766
+Probability of getting at least one head is 0.999
+Probability of getting 0 or 1 heads is 0.01074
+Probability of getting 0 or 1 (<= 1) heads is 0.01074
+Probability of getting 9 or 10 heads is 0.01074
+Probability of getting 9 or 10 heads is 0.01074
+Probability of getting 9 or 10 heads is 0.01074
+Probability of between 4 and 6 heads (4 or 5 or 6) is 0.6562
+Probability of between 4 and 6 heads (4 or 5 or 6) is 0.6563
+Probability of between 3 and 7 heads (3, 4, 5, 6 or 7) is 0.8906
+
+Probability of getting exactly (==) heads
+0 0.0009766 or 1 in 1024, or 0.09766%
+1 0.009766 or 1 in 102.4, or 0.9766%
+2 0.04395 or 1 in 22.76, or 4.395%
+3 0.1172 or 1 in 8.533, or 11.72%
+4 0.2051 or 1 in 4.876, or 20.51%
+5 0.2461 or 1 in 4.063, or 24.61%
+6 0.2051 or 1 in 4.876, or 20.51%
+7 0.1172 or 1 in 8.533, or 11.72%
+8 0.04395 or 1 in 22.76, or 4.395%
+9 0.009766 or 1 in 102.4, or 0.9766%
+10 0.0009766 or 1 in 1024, or 0.09766%
+
+Probability of getting upto (<=) heads
+0 0.0009766 or 1 in 1024, or 0.09766%
+1 0.01074 or 1 in 93.09, or 1.074%
+2 0.05469 or 1 in 18.29, or 5.469%
+3 0.1719 or 1 in 5.818, or 17.19%
+4 0.377 or 1 in 2.653, or 37.7%
+5 0.623 or 1 in 1.605, or 62.3%
+6 0.8281 or 1 in 1.208, or 82.81%
+7 0.9453 or 1 in 1.058, or 94.53%
+8 0.9893 or 1 in 1.011, or 98.93%
+9 0.999 or 1 in 1.001, or 99.9%
+10 1 or 1 in 1, or 100%
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../binom_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="binomial_quiz_example.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,451 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Binomial Quiz Example</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../binom_eg.html" title="Binomial Distribution Examples">
+<link rel="prev" href="binomial_coinflip_example.html" title="Binomial Coin-Flipping Example">
+<link rel="next" href="binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="binomial_coinflip_example.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="binom_conf.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_binom_eg_binomial_quiz_example">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.binom_eg.binomial_quiz_example"></a><a class="link" href="binomial_quiz_example.html" title="Binomial Quiz Example">Binomial
+ Quiz Example</a>
+</h5></div></div></div>
+<p>
+ A multiple choice test has four possible answers to each of 16 questions.
+ A student guesses the answer to each question, so the probability of
+ getting a correct answer on any given question is one in four, a quarter,
+ 1/4, 25% or fraction 0.25. The conditions of the binomial experiment
+ are assumed to be met: n = 16 questions constitute the trials; each question
+ results in one of two possible outcomes (correct or incorrect); the probability
+ of being correct is 0.25 and is constant if no knowledge about the subject
+ is assumed; the questions are answered independently if the student's
+ answer to a question in no way influences his/her answer to another question.
+ </p>
+<p>
+ First, we need to be able to use the binomial distribution constructor
+ (and some std input/output, of course).
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ios</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">flush</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">right</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fixed</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">exception</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">;</span>
+</pre>
+<p>
+ The number of correct answers, X, is distributed as a binomial random
+ variable with binomial distribution parameters: questions n and success
+ fraction probability p. So we construct a binomial distribution:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">questions</span> <span class="special">=</span> <span class="number">16</span><span class="special">;</span> <span class="comment">// All the questions in the quiz.</span>
+<span class="keyword">int</span> <span class="identifier">answers</span> <span class="special">=</span> <span class="number">4</span><span class="special">;</span> <span class="comment">// Possible answers to each question.</span>
+<span class="keyword">double</span> <span class="identifier">success_fraction</span> <span class="special">=</span> <span class="number">1.</span> <span class="special">/</span> <span class="identifier">answers</span><span class="special">;</span> <span class="comment">// If a random guess, p = 1/4 = 0.25.</span>
+<span class="identifier">binomial</span> <span class="identifier">quiz</span><span class="special">(</span><span class="identifier">questions</span><span class="special">,</span> <span class="identifier">success_fraction</span><span class="special">);</span>
+</pre>
+<p>
+ and display the distribution parameters we used thus:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"In a quiz with "</span> <span class="special"><<</span> <span class="identifier">quiz</span><span class="special">.</span><span class="identifier">trials</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" questions and with a probability of guessing right of "</span>
+ <span class="special"><<</span> <span class="identifier">quiz</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">()</span> <span class="special">*</span> <span class="number">100</span> <span class="special"><<</span> <span class="string">" %"</span>
+ <span class="special"><<</span> <span class="string">" or 1 in "</span> <span class="special"><<</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="number">1.</span> <span class="special">/</span> <span class="identifier">quiz</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">())</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Show a few probabilities of just guessing:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting none right is "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.010023</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting exactly one right is "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting exactly two right is "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">int</span> <span class="identifier">pass_score</span> <span class="special">=</span> <span class="number">11</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting exactly "</span> <span class="special"><<</span> <span class="identifier">pass_score</span> <span class="special"><<</span> <span class="string">" answers right by chance is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">pass_score</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting all "</span> <span class="special"><<</span> <span class="identifier">questions</span> <span class="special"><<</span> <span class="string">" answers right by chance is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">questions</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of getting none right is 0.0100226
+Probability of getting exactly one right is 0.0534538
+Probability of getting exactly two right is 0.133635
+Probability of getting exactly 11 right is 0.000247132
+Probability of getting exactly all 16 answers right by chance is 2.32831e-010
+</pre>
+<p>
+ These don't give any encouragement to guessers!
+ </p>
+<p>
+ We can tabulate the 'getting exactly right' ( == ) probabilities thus:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n"</span> <span class="string">"Guessed Probability"</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">successes</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">successes</span> <span class="special"><=</span> <span class="identifier">questions</span><span class="special">;</span> <span class="identifier">successes</span><span class="special">++)</span>
+<span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">probability</span> <span class="special">=</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">);</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">successes</span> <span class="special"><<</span> <span class="string">" "</span> <span class="special"><<</span> <span class="identifier">probability</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Guessed Probability
+ 0 0.0100226
+ 1 0.0534538
+ 2 0.133635
+ 3 0.207876
+ 4 0.225199
+ 5 0.180159
+ 6 0.110097
+ 7 0.0524273
+ 8 0.0196602
+ 9 0.00582526
+10 0.00135923
+11 0.000247132
+12 3.43239e-005
+13 3.5204e-006
+14 2.51457e-007
+15 1.11759e-008
+16 2.32831e-010
+</pre>
+<p>
+ Then we can add the probabilities of some 'exactly right' like this:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting none or one right is "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of getting none or one right is 0.0634764
+</pre>
+<p>
+ But if more than a couple of scores are involved, it is more convenient
+ (and may be more accurate) to use the Cumulative Distribution Function
+ (cdf) instead:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting none or one right is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of getting none or one right is 0.0634764
+</pre>
+<p>
+ Since the cdf is inclusive, we can get the probability of getting up
+ to 10 right ( <= )
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting <= 10 right (to fail) is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of getting <= 10 right (to fail) is 0.999715
+</pre>
+<p>
+ To get the probability of getting 11 or more right (to pass), it is tempting
+ to use
+ </p>
+<pre class="programlisting"><span class="number">1</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">10</span><span class="special">)</span></pre>
+<p>
+ to get the probability of > 10
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting > 10 right (to pass) is "</span> <span class="special"><<</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of getting > 10 right (to pass) is 0.000285239
+</pre>
+<p>
+ But this should be resisted in favor of using the complement function.
+ <a class="link" href="../../overview/complements.html#why_complements">Why complements?</a>
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting > 10 right (to pass) is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">10</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of getting > 10 right (to pass) is 0.000285239
+</pre>
+<p>
+ And we can check that these two, <= 10 and > 10, add up to unity.
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_ASSERT</span><span class="special">((</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">10</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">10</span><span class="special">)))</span> <span class="special">==</span> <span class="number">1.</span><span class="special">);</span>
+</pre>
+<p>
+ If we want a < rather than a <= test, because the CDF is inclusive,
+ we must subtract one from the score.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting less than "</span> <span class="special"><<</span> <span class="identifier">pass_score</span>
+ <span class="special"><<</span> <span class="string">" (< "</span> <span class="special"><<</span> <span class="identifier">pass_score</span> <span class="special"><<</span> <span class="string">") answers right by guessing is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">pass_score</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of getting less than 11 (< 11) answers right by guessing is 0.999715
+</pre>
+<p>
+ and similarly to get a >= rather than a > test we also need to
+ subtract one from the score (and can again check the sum is unity). This
+ is because if the cdf is <span class="emphasis"><em>inclusive</em></span>, then its complement
+ must be <span class="emphasis"><em>exclusive</em></span> otherwise there would be one possible
+ outcome counted twice!
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting at least "</span> <span class="special"><<</span> <span class="identifier">pass_score</span>
+ <span class="special"><<</span> <span class="string">"(>= "</span> <span class="special"><<</span> <span class="identifier">pass_score</span> <span class="special"><<</span> <span class="string">") answers right by guessing is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">pass_score</span><span class="special">-</span><span class="number">1</span><span class="special">))</span>
+ <span class="special"><<</span> <span class="string">", only 1 in "</span> <span class="special"><<</span> <span class="number">1</span><span class="special">/</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">pass_score</span><span class="special">-</span><span class="number">1</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">BOOST_ASSERT</span><span class="special">((</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">pass_score</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">pass_score</span><span class="special">-</span><span class="number">1</span><span class="special">)))</span> <span class="special">==</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<pre class="programlisting">Probability of getting at least 11 (>= 11) answers right by guessing is 0.000285239, only 1 in 3505.83
+</pre>
+<p>
+ Finally we can tabulate some probabilities:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n"</span> <span class="string">"At most (<=)"</span><span class="string">"\n"</span><span class="string">"Guessed OK Probability"</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">score</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">score</span> <span class="special"><=</span> <span class="identifier">questions</span><span class="special">;</span> <span class="identifier">score</span><span class="special">++)</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">score</span> <span class="special"><<</span> <span class="string">" "</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">10</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">score</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">At most (<=)
+Guessed OK Probability
+ 0 0.01002259576
+ 1 0.0634764398
+ 2 0.1971110499
+ 3 0.4049871101
+ 4 0.6301861752
+ 5 0.8103454274
+ 6 0.9204427481
+ 7 0.9728700437
+ 8 0.9925302796
+ 9 0.9983555346
+10 0.9997147608
+11 0.9999618928
+12 0.9999962167
+13 0.9999997371
+14 0.9999999886
+15 0.9999999998
+16 1
+</pre>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n"</span> <span class="string">"At least (>)"</span><span class="string">"\n"</span><span class="string">"Guessed OK Probability"</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">score</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">score</span> <span class="special"><=</span> <span class="identifier">questions</span><span class="special">;</span> <span class="identifier">score</span><span class="special">++)</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">score</span> <span class="special"><<</span> <span class="string">" "</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">10</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">score</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<pre class="programlisting">At least (>)
+Guessed OK Probability
+ 0 0.9899774042
+ 1 0.9365235602
+ 2 0.8028889501
+ 3 0.5950128899
+ 4 0.3698138248
+ 5 0.1896545726
+ 6 0.07955725188
+ 7 0.02712995629
+ 8 0.00746972044
+ 9 0.001644465374
+10 0.0002852391917
+11 3.810715862e-005
+12 3.783265129e-006
+13 2.628657967e-007
+14 1.140870154e-008
+15 2.328306437e-010
+16 0
+</pre>
+<p>
+ We now consider the probabilities of <span class="bold"><strong>ranges</strong></span>
+ of correct guesses.
+ </p>
+<p>
+ First, calculate the probability of getting a range of guesses right,
+ by adding the exact probabilities of each from low ... high.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">low</span> <span class="special">=</span> <span class="number">3</span><span class="special">;</span> <span class="comment">// Getting at least 3 right.</span>
+<span class="keyword">int</span> <span class="identifier">high</span> <span class="special">=</span> <span class="number">5</span><span class="special">;</span> <span class="comment">// Getting as most 5 right.</span>
+<span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0.</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">low</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><=</span> <span class="identifier">high</span><span class="special">;</span> <span class="identifier">i</span><span class="special">++)</span>
+<span class="special">{</span>
+ <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="special">}</span>
+<span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting between "</span>
+ <span class="special"><<</span> <span class="identifier">low</span> <span class="special"><<</span> <span class="string">" and "</span> <span class="special"><<</span> <span class="identifier">high</span> <span class="special"><<</span> <span class="string">" answers right by guessing is "</span>
+ <span class="special"><<</span> <span class="identifier">sum</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.61323</span>
+</pre>
+<pre class="programlisting">Probability of getting between 3 and 5 answers right by guessing is 0.6132
+</pre>
+<p>
+ Or, usually better, we can use the difference of cdfs instead:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting between "</span> <span class="special"><<</span> <span class="identifier">low</span> <span class="special"><<</span> <span class="string">" and "</span> <span class="special"><<</span> <span class="identifier">high</span> <span class="special"><<</span> <span class="string">" answers right by guessing is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">high</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">low</span> <span class="special">-</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.61323</span>
+</pre>
+<pre class="programlisting">Probability of getting between 3 and 5 answers right by guessing is 0.6132
+</pre>
+<p>
+ And we can also try a few more combinations of high and low choices:
+ </p>
+<pre class="programlisting"><span class="identifier">low</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">high</span> <span class="special">=</span> <span class="number">6</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting between "</span> <span class="special"><<</span> <span class="identifier">low</span> <span class="special"><<</span> <span class="string">" and "</span> <span class="special"><<</span> <span class="identifier">high</span> <span class="special"><<</span> <span class="string">" answers right by guessing is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">high</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">low</span> <span class="special">-</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1 and 6 P= 0.91042</span>
+<span class="identifier">low</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">high</span> <span class="special">=</span> <span class="number">8</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting between "</span> <span class="special"><<</span> <span class="identifier">low</span> <span class="special"><<</span> <span class="string">" and "</span> <span class="special"><<</span> <span class="identifier">high</span> <span class="special"><<</span> <span class="string">" answers right by guessing is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">high</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">low</span> <span class="special">-</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1 <= x 8 P = 0.9825</span>
+<span class="identifier">low</span> <span class="special">=</span> <span class="number">4</span><span class="special">;</span> <span class="identifier">high</span> <span class="special">=</span> <span class="number">4</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of getting between "</span> <span class="special"><<</span> <span class="identifier">low</span> <span class="special"><<</span> <span class="string">" and "</span> <span class="special"><<</span> <span class="identifier">high</span> <span class="special"><<</span> <span class="string">" answers right by guessing is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">high</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="identifier">low</span> <span class="special">-</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 4 <= x 4 P = 0.22520</span>
+</pre>
+<pre class="programlisting">Probability of getting between 1 and 6 answers right by guessing is 0.9104
+Probability of getting between 1 and 8 answers right by guessing is 0.9825
+Probability of getting between 4 and 4 answers right by guessing is 0.2252
+</pre>
+<h5>
+<a name="math_toolkit.stat_tut.weg.binom_eg.binomial_quiz_example.h0"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.binom_eg.binomial_quiz_example.using_binomial_distribution_mome"></a></span><a class="link" href="binomial_quiz_example.html#math_toolkit.stat_tut.weg.binom_eg.binomial_quiz_example.using_binomial_distribution_mome">Using
+ Binomial distribution moments</a>
+ </h5>
+<p>
+ Using moments of the distribution, we can say more about the spread of
+ results from guessing.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"By guessing, on average, one can expect to get "</span> <span class="special"><<</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" correct answers."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard deviation is "</span> <span class="special"><<</span> <span class="identifier">standard_deviation</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"So about 2/3 will lie within 1 standard deviation and get between "</span>
+ <span class="special"><<</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">mean</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">standard_deviation</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" and "</span>
+ <span class="special"><<</span> <span class="identifier">floor</span><span class="special">(</span><span class="identifier">mean</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">standard_deviation</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" correct."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Mode (the most frequent) is "</span> <span class="special"><<</span> <span class="identifier">mode</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Skewness is "</span> <span class="special"><<</span> <span class="identifier">skewness</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">By guessing, on average, one can expect to get 4 correct answers.
+Standard deviation is 1.732
+So about 2/3 will lie within 1 standard deviation and get between 3 and 5 correct.
+Mode (the most frequent) is 4
+Skewness is 0.2887
+</pre>
+<h5>
+<a name="math_toolkit.stat_tut.weg.binom_eg.binomial_quiz_example.h1"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.binom_eg.binomial_quiz_example.quantiles"></a></span><a class="link" href="binomial_quiz_example.html#math_toolkit.stat_tut.weg.binom_eg.binomial_quiz_example.quantiles">Quantiles</a>
+ </h5>
+<p>
+ The quantiles (percentiles or percentage points) for a few probability
+ levels:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Quartiles "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.25</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.25</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Quartiles</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"1 standard deviation "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.33</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.67</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1 sd</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Deciles "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.1</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.1</span><span class="special">))<<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Deciles</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"5 to 95% "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.05</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.05</span><span class="special">))<<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 5 to 95%</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"2.5 to 97.5% "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.025</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.025</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 2.5 to 97.5%</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"2 to 98% "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.02</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.02</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 2 to 98%</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If guessing then percentiles 1 to 99% will get "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.01</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">" to "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.01</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" right."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Notice that these output integral values because the default policy is
+ <code class="computeroutput"><span class="identifier">integer_round_outwards</span></code>.
+ </p>
+<pre class="programlisting">Quartiles 2 to 5
+1 standard deviation 2 to 5
+Deciles 1 to 6
+5 to 95% 0 to 7
+2.5 to 97.5% 0 to 8
+2 to 98% 0 to 8
+</pre>
+<p>
+ Quantiles values are controlled by the <a class="link" href="../../../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">discrete
+ quantile policy</a> chosen. The default is <code class="computeroutput"><span class="identifier">integer_round_outwards</span></code>,
+ so the lower quantile is rounded down, and the upper quantile is rounded
+ up.
+ </p>
+<p>
+ But we might believe that the real values tell us a little more - see
+ <a class="link" href="../../../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Discrete Quantile Policy</a>.
+ </p>
+<p>
+ We could control the policy for <span class="bold"><strong>all</strong></span>
+ distributions by
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span> <span class="identifier">real</span>
+
+<span class="identifier">at</span> <span class="identifier">the</span> <span class="identifier">head</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">program</span> <span class="identifier">would</span> <span class="identifier">make</span> <span class="keyword">this</span> <span class="identifier">policy</span> <span class="identifier">apply</span>
+</pre>
+<p>
+ to this <span class="bold"><strong>one, and only</strong></span>, translation unit.
+ </p>
+<p>
+ Or we can now create a (typedef for) policy that has discrete quantiles
+ real (here avoiding any 'using namespaces ...' statements):
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">discrete_quantile</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">real</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">integer_round_outwards</span><span class="special">;</span> <span class="comment">// Default.</span>
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><</span><span class="identifier">discrete_quantile</span><span class="special"><</span><span class="identifier">real</span><span class="special">></span> <span class="special">></span> <span class="identifier">real_quantile_policy</span><span class="special">;</span>
+</pre>
+<p>
+ Add a custom binomial distribution called
+ </p>
+<pre class="programlisting"><span class="identifier">real_quantile_binomial</span></pre>
+<p>
+ that uses
+ </p>
+<pre class="programlisting"><span class="identifier">real_quantile_policy</span></pre>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">binomial_distribution</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">binomial_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">real_quantile_policy</span><span class="special">></span> <span class="identifier">real_quantile_binomial</span><span class="special">;</span>
+</pre>
+<p>
+ Construct an object of this custom distribution:
+ </p>
+<pre class="programlisting"><span class="identifier">real_quantile_binomial</span> <span class="identifier">quiz_real</span><span class="special">(</span><span class="identifier">questions</span><span class="special">,</span> <span class="identifier">success_fraction</span><span class="special">);</span>
+</pre>
+<p>
+ And use this to show some quantiles - that now have real rather than
+ integer values.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Quartiles "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz</span><span class="special">,</span> <span class="number">0.25</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.25</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Quartiles 2 to 4.6212</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"1 standard deviation "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.33</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.67</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1 sd 2.6654 4.194</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Deciles "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.1</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.1</span><span class="special">))<<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Deciles 1.3487 5.7583</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"5 to 95% "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.05</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.05</span><span class="special">))<<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 5 to 95% 0.83739 6.4559</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"2.5 to 97.5% "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.025</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.025</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 2.5 to 97.5% 0.42806 7.0688</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"2 to 98% "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.02</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" to "</span>
+ <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.02</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 2 to 98% 0.31311 7.7880</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If guessing, then percentiles 1 to 99% will get "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.01</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">" to "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">quiz_real</span><span class="special">,</span> <span class="number">0.01</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" right."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Real Quantiles
+Quartiles 2 to 4.621
+1 standard deviation 2.665 to 4.194
+Deciles 1.349 to 5.758
+5 to 95% 0.8374 to 6.456
+2.5 to 97.5% 0.4281 to 7.069
+2 to 98% 0.3131 to 7.252
+If guessing then percentiles 1 to 99% will get 0 to 7.788 right.
+</pre>
+<p>
+ See binomial_quiz_example.cpp
+ for full source code and output.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="binomial_coinflip_example.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="binom_conf.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/c_sharp.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/c_sharp.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using the Distributions from Within C#</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="nag_library.html" title="Comparison with C, R, FORTRAN-style Free Functions">
+<link rel="next" href="../variates.html" title="Random Variates and Distribution Parameters">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="nag_library.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../variates.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_c_sharp">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.c_sharp"></a><a class="link" href="c_sharp.html" title="Using the Distributions from Within C#">Using the Distributions
+ from Within C#</a>
+</h4></div></div></div>
+<p>
+ The distributions in this library can be used from the C# programming language
+ when they are built using Microsofts Common Language Runtime option.
+ </p>
+<p>
+ An example of this kind of usage is given in the distribution_explorer
+ example: see <code class="literal">boost-root/libs/math/dot_net_example</code> for
+ the source code: the application consists of a C++ dll that contains the
+ actual distributions, and a C# GUI that allows you to explore their properties.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="nag_library.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../variates.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chi Squared Distribution Examples</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="st_eg/paired_st.html" title="Comparing two paired samples with the Student's t distribution">
+<link rel="next" href="cs_eg/chi_sq_intervals.html" title="Confidence Intervals on the Standard Deviation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="st_eg/paired_st.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="cs_eg/chi_sq_intervals.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_cs_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.cs_eg"></a><a class="link" href="cs_eg.html" title="Chi Squared Distribution Examples">Chi Squared Distribution
+ Examples</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="cs_eg/chi_sq_intervals.html">Confidence
+ Intervals on the Standard Deviation</a></span></dt>
+<dt><span class="section"><a href="cs_eg/chi_sq_test.html">Chi-Square
+ Test for the Standard Deviation</a></span></dt>
+<dt><span class="section"><a href="cs_eg/chi_sq_size.html">Estimating
+ the Required Sample Sizes for a Chi-Square Test for the Standard Deviation</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="st_eg/paired_st.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="cs_eg/chi_sq_intervals.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_intervals.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_intervals.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,226 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Confidence Intervals on the Standard Deviation</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../cs_eg.html" title="Chi Squared Distribution Examples">
+<link rel="prev" href="../cs_eg.html" title="Chi Squared Distribution Examples">
+<link rel="next" href="chi_sq_test.html" title="Chi-Square Test for the Standard Deviation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../cs_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../cs_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="chi_sq_test.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_cs_eg_chi_sq_intervals">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.cs_eg.chi_sq_intervals"></a><a class="link" href="chi_sq_intervals.html" title="Confidence Intervals on the Standard Deviation">Confidence
+ Intervals on the Standard Deviation</a>
+</h5></div></div></div>
+<p>
+ Once you have calculated the standard deviation for your data, a legitimate
+ question to ask is "How reliable is the calculated standard deviation?".
+ For this situation the Chi Squared distribution can be used to calculate
+ confidence intervals for the standard deviation.
+ </p>
+<p>
+ The full example code & sample output is in chi_square_std_deviation_test.cpp.
+ </p>
+<p>
+ We'll begin by defining the procedure that will calculate and print out
+ the confidence intervals:
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">confidence_limits_on_std_deviation</span><span class="special">(</span>
+ <span class="keyword">double</span> <span class="identifier">Sd</span><span class="special">,</span> <span class="comment">// Sample Standard Deviation</span>
+ <span class="keyword">unsigned</span> <span class="identifier">N</span><span class="special">)</span> <span class="comment">// Sample size</span>
+<span class="special">{</span>
+</pre>
+<p>
+ We'll begin by printing out some general information:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"________________________________________________\n"</span>
+ <span class="string">"2-Sided Confidence Limits For Standard Deviation\n"</span>
+ <span class="string">"________________________________________________\n\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">7</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of Observations"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">N</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Standard Deviation"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">Sd</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+ and then define a table of significance levels for which we'll calculate
+ intervals:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.25</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">,</span> <span class="number">0.00001</span> <span class="special">};</span>
+</pre>
+<p>
+ The distribution we'll need to calculate the confidence intervals is
+ a Chi Squared distribution, with N-1 degrees of freedom:
+ </p>
+<pre class="programlisting"><span class="identifier">chi_squared</span> <span class="identifier">dist</span><span class="special">(</span><span class="identifier">N</span> <span class="special">-</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ For each value of alpha, the formula for the confidence interval is given
+ by:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../../equations/chi_squ_tut1.png"></span>
+ </p>
+<p>
+ Where <span class="inlinemediaobject"><img src="../../../../../equations/chi_squ_tut2.png"></span> is the upper critical value, and <span class="inlinemediaobject"><img src="../../../../../equations/chi_squ_tut3.png"></span> is
+ the lower critical value of the Chi Squared distribution.
+ </p>
+<p>
+ In code we begin by printing out a table header:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n\n"</span>
+ <span class="string">"_____________________________________________\n"</span>
+ <span class="string">"Confidence Lower Upper\n"</span>
+ <span class="string">" Value (%) Limit Limit\n"</span>
+ <span class="string">"_____________________________________________\n"</span><span class="special">;</span>
+</pre>
+<p>
+ and then loop over the values of alpha and calculate the intervals for
+ each: remember that the lower critical value is the same as the quantile,
+ and the upper critical value is the same as the quantile from the complement
+ of the probability:
+ </p>
+<pre class="programlisting"><span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// Confidence value:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="number">100</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+ <span class="comment">// Calculate limits:</span>
+ <span class="keyword">double</span> <span class="identifier">lower_limit</span> <span class="special">=</span> <span class="identifier">sqrt</span><span class="special">((</span><span class="identifier">N</span> <span class="special">-</span> <span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">Sd</span> <span class="special">*</span> <span class="identifier">Sd</span> <span class="special">/</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span> <span class="special">/</span> <span class="number">2</span><span class="special">)));</span>
+ <span class="keyword">double</span> <span class="identifier">upper_limit</span> <span class="special">=</span> <span class="identifier">sqrt</span><span class="special">((</span><span class="identifier">N</span> <span class="special">-</span> <span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">Sd</span> <span class="special">*</span> <span class="identifier">Sd</span> <span class="special">/</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span> <span class="special">/</span> <span class="number">2</span><span class="special">));</span>
+ <span class="comment">// Print Limits:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">lower_limit</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">upper_limit</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ To see some example output we'll use the <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3581.htm" target="_top">gear
+ data</a> from the <a href="http://www.itl.nist.gov/div898/handbook/" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods.</a>. The data represents measurements
+ of gear diameter from a manufacturing process.
+ </p>
+<pre class="programlisting">________________________________________________
+2-Sided Confidence Limits For Standard Deviation
+________________________________________________
+
+Number of Observations = 100
+Standard Deviation = 0.006278908
+
+
+_____________________________________________
+Confidence Lower Upper
+ Value (%) Limit Limit
+_____________________________________________
+ 50.000 0.00601 0.00662
+ 75.000 0.00582 0.00685
+ 90.000 0.00563 0.00712
+ 95.000 0.00551 0.00729
+ 99.000 0.00530 0.00766
+ 99.900 0.00507 0.00812
+ 99.990 0.00489 0.00855
+ 99.999 0.00474 0.00895
+</pre>
+<p>
+ So at the 95% confidence level we conclude that the standard deviation
+ is between 0.00551 and 0.00729.
+ </p>
+<h5>
+<a name="math_toolkit.stat_tut.weg.cs_eg.chi_sq_intervals.h0"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.cs_eg.chi_sq_intervals.confidence_intervals_as_a_functi"></a></span><a class="link" href="chi_sq_intervals.html#math_toolkit.stat_tut.weg.cs_eg.chi_sq_intervals.confidence_intervals_as_a_functi">Confidence
+ intervals as a function of the number of observations</a>
+ </h5>
+<p>
+ Similarly, we can also list the confidence intervals for the standard
+ deviation for the common confidence levels 95%, for increasing numbers
+ of observations.
+ </p>
+<p>
+ The standard deviation used to compute these values is unity, so the
+ limits listed are <span class="bold"><strong>multipliers</strong></span> for any
+ particular standard deviation. For example, given a standard deviation
+ of 0.0062789 as in the example above; for 100 observations the multiplier
+ is 0.8780 giving the lower confidence limit of 0.8780 * 0.006728 = 0.00551.
+ </p>
+<pre class="programlisting">____________________________________________________
+Confidence level (two-sided) = 0.0500000
+Standard Deviation = 1.0000000
+________________________________________
+Observations Lower Upper
+ Limit Limit
+________________________________________
+ 2 0.4461 31.9102
+ 3 0.5207 6.2847
+ 4 0.5665 3.7285
+ 5 0.5991 2.8736
+ 6 0.6242 2.4526
+ 7 0.6444 2.2021
+ 8 0.6612 2.0353
+ 9 0.6755 1.9158
+ 10 0.6878 1.8256
+ 15 0.7321 1.5771
+ 20 0.7605 1.4606
+ 30 0.7964 1.3443
+ 40 0.8192 1.2840
+ 50 0.8353 1.2461
+ 60 0.8476 1.2197
+ 100 0.8780 1.1617
+ 120 0.8875 1.1454
+ 1000 0.9580 1.0459
+ 10000 0.9863 1.0141
+ 50000 0.9938 1.0062
+ 100000 0.9956 1.0044
+ 1000000 0.9986 1.0014
+</pre>
+<p>
+ With just 2 observations the limits are from <span class="bold"><strong>0.445</strong></span>
+ up to to <span class="bold"><strong>31.9</strong></span>, so the standard deviation
+ might be about <span class="bold"><strong>half</strong></span> the observed value
+ up to <span class="bold"><strong>30 times</strong></span> the observed value!
+ </p>
+<p>
+ Estimating a standard deviation with just a handful of values leaves
+ a very great uncertainty, especially the upper limit. Note especially
+ how far the upper limit is skewed from the most likely standard deviation.
+ </p>
+<p>
+ Even for 10 observations, normally considered a reasonable number, the
+ range is still from 0.69 to 1.8, about a range of 0.7 to 2, and is still
+ highly skewed with an upper limit <span class="bold"><strong>twice</strong></span>
+ the median.
+ </p>
+<p>
+ When we have 1000 observations, the estimate of the standard deviation
+ is starting to look convincing, with a range from 0.95 to 1.05 - now
+ near symmetrical, but still about + or - 5%.
+ </p>
+<p>
+ Only when we have 10000 or more repeated observations can we start to
+ be reasonably confident (provided we are sure that other factors like
+ drift are not creeping in).
+ </p>
+<p>
+ For 10000 observations, the interval is 0.99 to 1.1 - finally a really
+ convincing + or -1% confidence.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../cs_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../cs_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="chi_sq_test.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,172 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../cs_eg.html" title="Chi Squared Distribution Examples">
+<link rel="prev" href="chi_sq_test.html" title="Chi-Square Test for the Standard Deviation">
+<link rel="next" href="../f_eg.html" title="F Distribution Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="chi_sq_test.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../cs_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../f_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_cs_eg_chi_sq_size">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.cs_eg.chi_sq_size"></a><a class="link" href="chi_sq_size.html" title="Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation">Estimating
+ the Required Sample Sizes for a Chi-Square Test for the Standard Deviation</a>
+</h5></div></div></div>
+<p>
+ Suppose we conduct a Chi Squared test for standard deviation and the
+ result is borderline, a legitimate question to ask is "How large
+ would the sample size have to be in order to produce a definitive result?"
+ </p>
+<p>
+ The class template <a class="link" href="../../../dist_ref/dists/chi_squared_dist.html" title="Chi Squared Distribution">chi_squared_distribution</a>
+ has a static method <code class="computeroutput"><span class="identifier">find_degrees_of_freedom</span></code>
+ that will calculate this value for some acceptable risk of type I failure
+ <span class="emphasis"><em>alpha</em></span>, type II failure <span class="emphasis"><em>beta</em></span>,
+ and difference from the standard deviation <span class="emphasis"><em>diff</em></span>.
+ Please note that the method used works on variance, and not standard
+ deviation as is usual for the Chi Squared Test.
+ </p>
+<p>
+ The code for this example is located in chi_square_std_dev_test.cpp.
+ </p>
+<p>
+ We begin by defining a procedure to print out the sample sizes required
+ for various risk levels:
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">chi_squared_sample_sized</span><span class="special">(</span>
+ <span class="keyword">double</span> <span class="identifier">diff</span><span class="special">,</span> <span class="comment">// difference from variance to detect</span>
+ <span class="keyword">double</span> <span class="identifier">variance</span><span class="special">)</span> <span class="comment">// true variance</span>
+<span class="special">{</span>
+</pre>
+<p>
+ The procedure begins by printing out the input data:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+
+<span class="comment">// Print out general info:</span>
+<span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"_____________________________________________________________\n"</span>
+ <span class="string">"Estimated sample sizes required for various confidence levels\n"</span>
+ <span class="string">"_____________________________________________________________\n\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"True Variance"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">variance</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Difference to detect"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">diff</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+ And defines a table of significance levels for which we'll calculate
+ sample sizes:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.25</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">,</span> <span class="number">0.00001</span> <span class="special">};</span>
+</pre>
+<p>
+ For each value of alpha we can calculate two sample sizes: one where
+ the sample variance is less than the true value by <span class="emphasis"><em>diff</em></span>
+ and one where it is greater than the true value by <span class="emphasis"><em>diff</em></span>.
+ Thanks to the asymmetric nature of the Chi Squared distribution these
+ two values will not be the same, the difference in their calculation
+ differs only in the sign of <span class="emphasis"><em>diff</em></span> that's passed to
+ <code class="computeroutput"><span class="identifier">find_degrees_of_freedom</span></code>.
+ Finally in this example we'll simply things, and let risk level <span class="emphasis"><em>beta</em></span>
+ be the same as <span class="emphasis"><em>alpha</em></span>:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n\n"</span>
+ <span class="string">"_______________________________________________________________\n"</span>
+ <span class="string">"Confidence Estimated Estimated\n"</span>
+ <span class="string">" Value (%) Sample Size Sample Size\n"</span>
+ <span class="string">" (lower one (upper one\n"</span>
+ <span class="string">" sided test) sided test)\n"</span>
+ <span class="string">"_______________________________________________________________\n"</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// Now print out the data for the table rows.</span>
+<span class="comment">//</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// Confidence value:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="number">100</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+ <span class="comment">// calculate df for a lower single sided test:</span>
+ <span class="keyword">double</span> <span class="identifier">df</span> <span class="special">=</span> <span class="identifier">chi_squared</span><span class="special">::</span><span class="identifier">find_degrees_of_freedom</span><span class="special">(</span>
+ <span class="special">-</span><span class="identifier">diff</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">variance</span><span class="special">);</span>
+ <span class="comment">// convert to sample size:</span>
+ <span class="keyword">double</span> <span class="identifier">size</span> <span class="special">=</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">df</span><span class="special">)</span> <span class="special">+</span> <span class="number">1</span><span class="special">;</span>
+ <span class="comment">// Print size:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">16</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">size</span><span class="special">;</span>
+ <span class="comment">// calculate df for an upper single sided test:</span>
+ <span class="identifier">df</span> <span class="special">=</span> <span class="identifier">chi_squared</span><span class="special">::</span><span class="identifier">find_degrees_of_freedom</span><span class="special">(</span>
+ <span class="identifier">diff</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">variance</span><span class="special">);</span>
+ <span class="comment">// convert to sample size:</span>
+ <span class="identifier">size</span> <span class="special">=</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">df</span><span class="special">)</span> <span class="special">+</span> <span class="number">1</span><span class="special">;</span>
+ <span class="comment">// Print size:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">16</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">size</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ For some example output, consider the <a href="http://www.itl.nist.gov/div898/handbook/prc/section2/prc23.htm" target="_top">silicon
+ wafer data</a> from the <a href="http://www.itl.nist.gov/div898/handbook/" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods.</a>. In this scenario a supplier
+ of 100 ohm.cm silicon wafers claims that his fabrication process can
+ produce wafers with sufficient consistency so that the standard deviation
+ of resistivity for the lot does not exceed 10 ohm.cm. A sample of N =
+ 10 wafers taken from the lot has a standard deviation of 13.97 ohm.cm,
+ and the question we ask ourselves is "How large would our sample
+ have to be to reliably detect this difference?".
+ </p>
+<p>
+ To use our procedure above, we have to convert the standard deviations
+ to variance (square them), after which the program output looks like
+ this:
+ </p>
+<pre class="programlisting">_____________________________________________________________
+Estimated sample sizes required for various confidence levels
+_____________________________________________________________
+
+True Variance = 100.00000
+Difference to detect = 95.16090
+
+
+_______________________________________________________________
+Confidence Estimated Estimated
+ Value (%) Sample Size Sample Size
+ (lower one (upper one
+ sided test) sided test)
+_______________________________________________________________
+ 50.000 2 2
+ 75.000 2 10
+ 90.000 4 32
+ 95.000 5 51
+ 99.000 7 99
+ 99.900 11 174
+ 99.990 15 251
+ 99.999 20 330
+</pre>
+<p>
+ In this case we are interested in a upper single sided test. So for example,
+ if the maximum acceptable risk of falsely rejecting the null-hypothesis
+ is 0.05 (Type I error), and the maximum acceptable risk of failing to
+ reject the null-hypothesis is also 0.05 (Type II error), we estimate
+ that we would need a sample size of 51.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="chi_sq_test.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../cs_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../f_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_test.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_test.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,287 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chi-Square Test for the Standard Deviation</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../cs_eg.html" title="Chi Squared Distribution Examples">
+<link rel="prev" href="chi_sq_intervals.html" title="Confidence Intervals on the Standard Deviation">
+<link rel="next" href="chi_sq_size.html" title="Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="chi_sq_intervals.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../cs_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="chi_sq_size.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_cs_eg_chi_sq_test">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.cs_eg.chi_sq_test"></a><a class="link" href="chi_sq_test.html" title="Chi-Square Test for the Standard Deviation">Chi-Square
+ Test for the Standard Deviation</a>
+</h5></div></div></div>
+<p>
+ We use this test to determine whether the standard deviation of a sample
+ differs from a specified value. Typically this occurs in process change
+ situations where we wish to compare the standard deviation of a new process
+ to an established one.
+ </p>
+<p>
+ The code for this example is contained in chi_square_std_dev_test.cpp,
+ and we'll begin by defining the procedure that will print out the test
+ statistics:
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">chi_squared_test</span><span class="special">(</span>
+ <span class="keyword">double</span> <span class="identifier">Sd</span><span class="special">,</span> <span class="comment">// Sample std deviation</span>
+ <span class="keyword">double</span> <span class="identifier">D</span><span class="special">,</span> <span class="comment">// True std deviation</span>
+ <span class="keyword">unsigned</span> <span class="identifier">N</span><span class="special">,</span> <span class="comment">// Sample size</span>
+ <span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">)</span> <span class="comment">// Significance level</span>
+<span class="special">{</span>
+</pre>
+<p>
+ The procedure begins by printing a summary of the input data:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+
+<span class="comment">// Print header:</span>
+<span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"______________________________________________\n"</span>
+ <span class="string">"Chi Squared test for sample standard deviation\n"</span>
+ <span class="string">"______________________________________________\n\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of Observations"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">N</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Sample Standard Deviation"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">Sd</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Expected True Standard Deviation"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">D</span> <span class="special"><<</span> <span class="string">"\n\n"</span><span class="special">;</span>
+</pre>
+<p>
+ The test statistic (T) is simply the ratio of the sample and "true"
+ standard deviations squared, multiplied by the number of degrees of freedom
+ (the sample size less one):
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">t_stat</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">N</span> <span class="special">-</span> <span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">Sd</span> <span class="special">/</span> <span class="identifier">D</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">Sd</span> <span class="special">/</span> <span class="identifier">D</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Test Statistic"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">t_stat</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+ The distribution we need to use, is a Chi Squared distribution with N-1
+ degrees of freedom:
+ </p>
+<pre class="programlisting"><span class="identifier">chi_squared</span> <span class="identifier">dist</span><span class="special">(</span><span class="identifier">N</span> <span class="special">-</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ The various hypothesis that can be tested are summarised in the following
+ table:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Hypothesis
+ </p>
+ </th>
+<th>
+ <p>
+ Test
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ The null-hypothesis: there is no difference in standard deviation
+ from the specified value
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if T < χ<sup>2</sup><sub>(1-alpha/2; N-1)</sub> or T > χ<sup>2</sup><sub>(alpha/2; N-1)</sub>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The alternative hypothesis: there is a difference in standard
+ deviation from the specified value
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if χ<sup>2</sup><sub>(1-alpha/2; N-1)</sub> >= T >= χ<sup>2</sup><sub>(alpha/2; N-1)</sub>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The alternative hypothesis: the standard deviation is less
+ than the specified value
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if χ<sup>2</sup><sub>(1-alpha; N-1)</sub> <= T
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The alternative hypothesis: the standard deviation is greater
+ than the specified value
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if χ<sup>2</sup><sub>(alpha; N-1)</sub> >= T
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Where χ<sup>2</sup><sub>(alpha; N-1)</sub> is the upper critical value of the Chi Squared distribution,
+ and χ<sup>2</sup><sub>(1-alpha; N-1)</sub> is the lower critical value.
+ </p>
+<p>
+ Recall that the lower critical value is the same as the quantile, and
+ the upper critical value is the same as the quantile from the complement
+ of the probability, that gives us the following code to calculate the
+ critical values:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">ucv</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">));</span>
+<span class="keyword">double</span> <span class="identifier">ucv2</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span> <span class="special">/</span> <span class="number">2</span><span class="special">));</span>
+<span class="keyword">double</span> <span class="identifier">lcv</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">lcv2</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span> <span class="special">/</span> <span class="number">2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Upper Critical Value at alpha: "</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="identifier">ucv</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Upper Critical Value at alpha/2: "</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="identifier">ucv2</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Lower Critical Value at alpha: "</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="identifier">lcv</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Lower Critical Value at alpha/2: "</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="identifier">lcv2</span> <span class="special"><<</span> <span class="string">"\n\n"</span><span class="special">;</span>
+</pre>
+<p>
+ Now that we have the critical values, we can compare these to our test
+ statistic, and print out the result of each hypothesis and test:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span>
+ <span class="string">"Results for Alternative Hypothesis and alpha"</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">4</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">alpha</span> <span class="special"><<</span> <span class="string">"\n\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Alternative Hypothesis Conclusion\n"</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard Deviation != "</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">D</span> <span class="special"><<</span> <span class="string">" "</span><span class="special">;</span>
+<span class="keyword">if</span><span class="special">((</span><span class="identifier">ucv2</span> <span class="special"><</span> <span class="identifier">t_stat</span><span class="special">)</span> <span class="special">||</span> <span class="special">(</span><span class="identifier">lcv2</span> <span class="special">></span> <span class="identifier">t_stat</span><span class="special">))</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ACCEPTED\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"REJECTED\n"</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard Deviation < "</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">D</span> <span class="special"><<</span> <span class="string">" "</span><span class="special">;</span>
+<span class="keyword">if</span><span class="special">(</span><span class="identifier">lcv</span> <span class="special">></span> <span class="identifier">t_stat</span><span class="special">)</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ACCEPTED\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"REJECTED\n"</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard Deviation > "</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">D</span> <span class="special"><<</span> <span class="string">" "</span><span class="special">;</span>
+<span class="keyword">if</span><span class="special">(</span><span class="identifier">ucv</span> <span class="special"><</span> <span class="identifier">t_stat</span><span class="special">)</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ACCEPTED\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"REJECTED\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ To see some example output we'll use the <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3581.htm" target="_top">gear
+ data</a> from the <a href="http://www.itl.nist.gov/div898/handbook/" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods.</a>. The data represents measurements
+ of gear diameter from a manufacturing process. The program output is
+ deliberately designed to mirror the DATAPLOT output shown in the <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda358.htm" target="_top">NIST
+ Handbook Example</a>.
+ </p>
+<pre class="programlisting">______________________________________________
+Chi Squared test for sample standard deviation
+______________________________________________
+
+Number of Observations = 100
+Sample Standard Deviation = 0.00628
+Expected True Standard Deviation = 0.10000
+
+Test Statistic = 0.39030
+CDF of test statistic: = 1.438e-099
+Upper Critical Value at alpha: = 1.232e+002
+Upper Critical Value at alpha/2: = 1.284e+002
+Lower Critical Value at alpha: = 7.705e+001
+Lower Critical Value at alpha/2: = 7.336e+001
+
+Results for Alternative Hypothesis and alpha = 0.0500
+
+Alternative Hypothesis Conclusion
+Standard Deviation != 0.100 ACCEPTED
+Standard Deviation < 0.100 ACCEPTED
+Standard Deviation > 0.100 REJECTED
+</pre>
+<p>
+ In this case we are testing whether the sample standard deviation is
+ 0.1, and the null-hypothesis is rejected, so we conclude that the standard
+ deviation <span class="emphasis"><em>is not</em></span> 0.1.
+ </p>
+<p>
+ For an alternative example, consider the <a href="http://www.itl.nist.gov/div898/handbook/prc/section2/prc23.htm" target="_top">silicon
+ wafer data</a> again from the <a href="http://www.itl.nist.gov/div898/handbook/" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods.</a>. In this scenario a supplier
+ of 100 ohm.cm silicon wafers claims that his fabrication process can
+ produce wafers with sufficient consistency so that the standard deviation
+ of resistivity for the lot does not exceed 10 ohm.cm. A sample of N =
+ 10 wafers taken from the lot has a standard deviation of 13.97 ohm.cm,
+ and the question we ask ourselves is "Is the suppliers claim correct?".
+ </p>
+<p>
+ The program output now looks like this:
+ </p>
+<pre class="programlisting">______________________________________________
+Chi Squared test for sample standard deviation
+______________________________________________
+
+Number of Observations = 10
+Sample Standard Deviation = 13.97000
+Expected True Standard Deviation = 10.00000
+
+Test Statistic = 17.56448
+CDF of test statistic: = 9.594e-001
+Upper Critical Value at alpha: = 1.692e+001
+Upper Critical Value at alpha/2: = 1.902e+001
+Lower Critical Value at alpha: = 3.325e+000
+Lower Critical Value at alpha/2: = 2.700e+000
+
+Results for Alternative Hypothesis and alpha = 0.0500
+
+Alternative Hypothesis Conclusion
+Standard Deviation != 10.000 REJECTED
+Standard Deviation < 10.000 REJECTED
+Standard Deviation > 10.000 ACCEPTED
+</pre>
+<p>
+ In this case, our null-hypothesis is that the standard deviation of the
+ sample is less than 10: this hypothesis is rejected in the analysis above,
+ and so we reject the manufacturers claim.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="chi_sq_intervals.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../cs_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="chi_sq_size.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/dist_construct_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/dist_construct_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,323 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Distribution Construction Examples</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="../weg.html" title="Worked Examples">
+<link rel="next" href="st_eg.html" title="Student's t Distribution Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../weg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="st_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_dist_construct_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.dist_construct_eg"></a><a class="link" href="dist_construct_eg.html" title="Distribution Construction Examples">Distribution
+ Construction Examples</a>
+</h4></div></div></div>
+<p>
+ The structure of distributions is rather different from some other statistical
+ libraries, for example, those written in less object-oriented language
+ like FORTRAN and C: these provide a few arguments to each free function.
+ </p>
+<p>
+ Boost.Math library provides each distribution as a template C++ class.
+ A distribution is constructed with a few arguments, and then member and
+ non-member functions are used to find values of the distribution, often
+ a function of a random variate.
+ </p>
+<p>
+ For this demonstration, first we need some includes to access the negative
+ binomial distribution (and the binomial, beta and gamma distributions too).
+ </p>
+<p>
+ To demonstrate the use with a high precision User-defined floating-point
+ type <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code> we also
+ need an include from Boost.Multiprecision.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for negative_binomial_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial_distribution</span><span class="special">;</span> <span class="comment">// default type is double.</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for binomial_distribution.</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">beta</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for beta_distribution.</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for gamma_distribution.</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for normal_distribution.</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for cpp_dec_float_100</span>
+</pre>
+<p>
+ Several examples of constructing distributions follow:
+ </p>
+<p>
+ First, a negative binomial distribution with 8 successes and a success
+ fraction 0.25, 25% or 1 in 4, is constructed like this:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">mydist0</span><span class="special">(</span><span class="number">8.</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+</pre>
+<p>
+ But this is inconveniently long, so we might be tempted to write
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+</pre>
+<p>
+ but this might risk ambiguity with names in <code class="computeroutput"><span class="identifier">std</span>
+ <span class="identifier">random</span></code> so <span class="bold"><strong>much</strong></span>
+ better is explicit <code class="computeroutput"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span></code>
+ statements, for example:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial_distribution</span><span class="special">;</span>
+</pre>
+<p>
+ and we can still reduce typing.
+ </p>
+<p>
+ Since the vast majority of applications use will be using <code class="computeroutput"><span class="keyword">double</span></code> precision, the template argument
+ to the distribution (<code class="computeroutput"><span class="identifier">RealType</span></code>)
+ defaults to type <code class="computeroutput"><span class="keyword">double</span></code>, so
+ we can also write:
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial_distribution</span><span class="special"><></span> <span class="identifier">mydist9</span><span class="special">(</span><span class="number">8.</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span> <span class="comment">// Uses default `RealType = double`.</span>
+</pre>
+<p>
+ But the name <code class="computeroutput"><span class="identifier">negative_binomial_distribution</span></code>
+ is still inconveniently long, so, for most distributions, a convenience
+ <code class="computeroutput"><span class="keyword">typedef</span></code> is provided, for example:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">negative_binomial</span><span class="special">;</span> <span class="comment">// Reserved name of type double.</span>
+</pre>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This convenience typedef is <span class="bold"><strong>not provided</strong></span>
+ if a clash would occur with the name of a function: currently only <code class="computeroutput"><span class="identifier">beta</span></code> and <code class="computeroutput"><span class="identifier">gamma</span></code>
+ fall into this category.
+ </p></td></tr>
+</table></div>
+<p>
+ So, after a using statement,
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial</span><span class="special">;</span>
+</pre>
+<p>
+ we have a convenient typedef to <code class="computeroutput"><span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span></code>:
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial</span> <span class="identifier">mydist</span><span class="special">(</span><span class="number">8.</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+</pre>
+<p>
+ Some more examples using the convenience typedef:
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial</span> <span class="identifier">mydist10</span><span class="special">(</span><span class="number">5.</span><span class="special">,</span> <span class="number">0.4</span><span class="special">);</span> <span class="comment">// Both arguments double.</span>
+</pre>
+<p>
+ And automatic conversion takes place, so you can use integers and floats:
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial</span> <span class="identifier">mydist11</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">0.4</span><span class="special">);</span> <span class="comment">// Using provided typedef double, int and double arguments.</span>
+</pre>
+<p>
+ This is probably the most common usage.
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial</span> <span class="identifier">mydist12</span><span class="special">(</span><span class="number">5.</span><span class="special">,</span> <span class="number">0.4F</span><span class="special">);</span> <span class="comment">// Double and float arguments.</span>
+<span class="identifier">negative_binomial</span> <span class="identifier">mydist13</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span> <span class="comment">// Both arguments integer.</span>
+</pre>
+<p>
+ Similarly for most other distributions like the binomial.
+ </p>
+<pre class="programlisting"><span class="identifier">binomial</span> <span class="identifier">mybinomial</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span> <span class="comment">// is more concise than</span>
+<span class="identifier">binomial_distribution</span><span class="special"><></span> <span class="identifier">mybinomd1</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span>
+</pre>
+<p>
+ For cases when the typdef distribution name would clash with a math special
+ function (currently only beta and gamma) the typedef is deliberately not
+ provided, and the longer version of the name must be used. For example
+ do not use:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">beta</span><span class="special">;</span>
+<span class="identifier">beta</span> <span class="identifier">mybetad0</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span> <span class="comment">// Error beta is a math FUNCTION!</span>
+</pre>
+<p>
+ Which produces the error messages:
+ </p>
+<pre class="programlisting">error C2146: syntax error : missing ';' before identifier 'mybetad0'
+warning C4551: function call missing argument list
+error C3861: 'mybetad0': identifier not found
+</pre>
+<p>
+ Instead you should use:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">beta_distribution</span><span class="special">;</span>
+<span class="identifier">beta_distribution</span><span class="special"><></span> <span class="identifier">mybetad1</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span>
+</pre>
+<p>
+ or for the gamma distribution:
+ </p>
+<pre class="programlisting"><span class="identifier">gamma_distribution</span><span class="special"><></span> <span class="identifier">mygammad1</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span>
+</pre>
+<p>
+ We can, of course, still provide the type explicitly thus:
+ </p>
+<pre class="programlisting"><span class="comment">// Explicit double precision: both arguments are double:</span>
+<span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">mydist1</span><span class="special">(</span><span class="number">8.</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+
+<span class="comment">// Explicit float precision, double arguments are truncated to float:</span>
+<span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="identifier">mydist2</span><span class="special">(</span><span class="number">8.</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+
+<span class="comment">// Explicit float precision, integer & double arguments converted to float:</span>
+<span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="identifier">mydist3</span><span class="special">(</span><span class="number">8</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+
+<span class="comment">// Explicit float precision, float arguments, so no conversion:</span>
+<span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="identifier">mydist4</span><span class="special">(</span><span class="number">8.F</span><span class="special">,</span> <span class="number">0.25F</span><span class="special">);</span>
+
+<span class="comment">// Explicit float precision, integer arguments promoted to float.</span>
+<span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="identifier">mydist5</span><span class="special">(</span><span class="number">8</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+
+<span class="comment">// Explicit double precision:</span>
+<span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">mydist6</span><span class="special">(</span><span class="number">8.</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+
+<span class="comment">// Explicit long double precision:</span>
+<span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="identifier">mydist7</span><span class="special">(</span><span class="number">8.</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+</pre>
+<p>
+ And you can use your own RealType, for example, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span></code>
+ (an arbitrary 50 decimal digits precision type), then we can write:
+ </p>
+<pre class="programlisting"> <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
+
+ <span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">></span> <span class="identifier">mydist8</span><span class="special">(</span><span class="number">8</span><span class="special">,</span> <span class="number">0.25</span><span class="special">);</span>
+ <span class="comment">// `integer` arguments are promoted to your RealType exactly, but</span>
+ <span class="comment">// `double` argument are converted to RealType,</span>
+ <span class="comment">// possibly losing precision, so don't write:</span>
+
+ <span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">></span> <span class="identifier">mydist20</span><span class="special">(</span><span class="number">8</span><span class="special">,</span> <span class="number">0.23456789012345678901234567890</span><span class="special">);</span>
+<span class="comment">// to avoid truncation of second parameter to `0.2345678901234567`.</span>
+
+ <span class="identifier">negative_binomial_distribution</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">></span> <span class="identifier">mydist21</span><span class="special">(</span><span class="number">8</span><span class="special">,</span> <span class="identifier">cpp_dec_float_50</span><span class="special">(</span><span class="string">"0.23456789012345678901234567890"</span><span class="special">)</span> <span class="special">);</span>
+
+ <span class="comment">// Ensure that all potentially significant digits are shown.</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">);</span>
+ <span class="identifier">cpp_dec_float_50</span> <span class="identifier">x</span><span class="special">(</span><span class="string">"1.23456789012345678901234567890"</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">mydist8</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting"><span class="identifier">showing</span> <span class="number">0.00012630010495970320103876754721976419438231705359935</span>
+</pre>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ When using multiprecision, it is all too easy to get accidental truncation!
+ </p></td></tr>
+</table></div>
+<p>
+ For example, if you write
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">mydist8</span><span class="special">,</span> <span class="number">1.23456789012345678901234567890</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ showing 0.00012630010495970318465064569310967179576805651692929, which
+ is wrong at about the 17th decimal digit!
+ </p>
+<p>
+ This is because the value provided is truncated to a <code class="computeroutput"><span class="keyword">double</span></code>,
+ effectively <code class="computeroutput"><span class="keyword">double</span> <span class="identifier">x</span>
+ <span class="special">=</span> <span class="number">1.23456789012345678901234567890</span><span class="special">;</span></code>
+ </p>
+<p>
+ Then the now <code class="computeroutput"><span class="keyword">double</span> <span class="identifier">x</span></code>
+ is passed to function <code class="computeroutput"><span class="identifier">pdf</span></code>,
+ and this truncated <code class="computeroutput"><span class="keyword">double</span></code>
+ value is finally promoted to <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>.
+ </p>
+<p>
+ Another way of quietly getting the wrong answer is to write:
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">mydist8</span><span class="special">,</span> <span class="identifier">cpp_dec_float_50</span><span class="special">(</span><span class="number">1.23456789012345678901234567890</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ A correct way from a multi-digit string value is
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">mydist8</span><span class="special">,</span> <span class="identifier">cpp_dec_float_50</span><span class="special">(</span><span class="string">"1.23456789012345678901234567890"</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Getting about 17 decimal digits followed by many zeros is often a sign
+ of accidental truncation.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.stat_tut.weg.dist_construct_eg.h0"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.dist_construct_eg.default_arguments_to_distributio"></a></span><a class="link" href="dist_construct_eg.html#math_toolkit.stat_tut.weg.dist_construct_eg.default_arguments_to_distributio">Default
+ arguments to distribution constructors.</a>
+ </h5>
+<p>
+ Note that default constructor arguments are only provided for some distributions.
+ So if you wrongly assume a default argument, you will get an error message,
+ for example:
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial_distribution</span><span class="special"><></span> <span class="identifier">mydist8</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">error C2512 no appropriate default constructor available.</pre>
+<p>
+ No default constructors are provided for the <code class="computeroutput"><span class="identifier">negative</span>
+ <span class="identifier">binomial</span></code> distribution, because
+ it is difficult to chose any sensible default values for this distribution.
+ </p>
+<p>
+ For other distributions, like the normal distribution, it is obviously
+ very useful to provide 'standard' defaults for the mean (zero) and standard
+ deviation (unity) thus:
+ </p>
+<pre class="programlisting"><span class="identifier">normal_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">sd</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ So in this case we can write:
+ </p>
+<pre class="programlisting"> <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal</span><span class="special">;</span>
+
+ <span class="identifier">normal</span> <span class="identifier">norm1</span><span class="special">;</span> <span class="comment">// Standard normal distribution.</span>
+ <span class="identifier">normal</span> <span class="identifier">norm2</span><span class="special">(</span><span class="number">2</span><span class="special">);</span> <span class="comment">// Mean = 2, std deviation = 1.</span>
+ <span class="identifier">normal</span> <span class="identifier">norm3</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">);</span> <span class="comment">// Mean = 2, std deviation = 3.</span>
+
+ <span class="special">}</span>
+ <span class="keyword">catch</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span> <span class="special">&</span><span class="identifier">ex</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">ex</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// int main()</span>
+</pre>
+<p>
+ There is no useful output from this demonstration program, of course.
+ </p>
+<p>
+ See distribution_construction.cpp
+ for full source code.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../weg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="st_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/error_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/error_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,196 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Error Handling Example</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="nccs_eg/nccs_power_eg.html" title="Tables of the power function of the chi2 test.">
+<link rel="next" href="find_eg.html" title="Find Location and Scale Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="nccs_eg/nccs_power_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="find_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_error_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.error_eg"></a><a class="link" href="error_eg.html" title="Error Handling Example">Error Handling
+ Example</a>
+</h4></div></div></div>
+<p>
+ See <a class="link" href="../../error_handling.html" title="Error Handling">error handling documentation</a>
+ for a detailed explanation of the mechanism of handling errors, including
+ the common "bad" arguments to distributions and functions, and
+ how to use <a class="link" href="../../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policies</a> to control it.
+ </p>
+<p>
+ But, by default, <span class="bold"><strong>exceptions will be raised</strong></span>,
+ for domain errors, pole errors, numeric overflow, and internal evaluation
+ errors. To avoid the exceptions from getting thrown and instead get an
+ appropriate value returned, usually a NaN (domain errors pole errors or
+ internal errors), or infinity (from overflow), you need to change the policy.
+ </p>
+<p>
+ The following example demonstrates the effect of setting the macro BOOST_MATH_DOMAIN_ERROR_POLICY
+ when an invalid argument is encountered. For the purposes of this example,
+ we'll pass a negative degrees of freedom parameter to the student's t distribution.
+ </p>
+<p>
+ Since we know that this is a single file program we could just add:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DOMAIN_ERROR_POLICY</span> <span class="identifier">ignore_error</span>
+</pre>
+<p>
+ to the top of the source file to change the default policy to one that
+ simply returns a NaN when a domain error occurs. Alternatively we could
+ use:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DOMAIN_ERROR_POLICY</span> <span class="identifier">errno_on_error</span>
+</pre>
+<p>
+ To ensure the <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ is set when a domain error occurs as well as returning a NaN.
+ </p>
+<p>
+ This is safe provided the program consists of a single translation unit
+ <span class="emphasis"><em>and</em></span> we place the define <span class="emphasis"><em>before</em></span>
+ any #includes. Note that should we add the define after the includes then
+ it will have no effect! A warning such as:
+ </p>
+<pre class="programlisting">warning C4005: 'BOOST_MATH_OVERFLOW_ERROR_POLICY' : macro redefinition</pre>
+<p>
+ is a certain sign that it will <span class="emphasis"><em>not</em></span> have the desired
+ effect.
+ </p>
+<p>
+ We'll begin our sample program with the needed includes:
+ </p>
+<pre class="programlisting"> <span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DOMAIN_ERROR_POLICY</span> <span class="identifier">ignore_error</span>
+
+<span class="comment">// Boost</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">students_t</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">students_t</span><span class="special">;</span> <span class="comment">// Probability of students_t(df, t).</span>
+
+<span class="comment">// std</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">stdexcept</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cstddef</span><span class="special">></span>
+ <span class="comment">// using ::errno</span>
+</pre>
+<p>
+ Next we'll define the program's main() to call the student's t distribution
+ with an invalid degrees of freedom parameter, the program is set up to
+ handle either an exception or a NaN:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Example error handling using Student's t function. "</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"BOOST_MATH_DOMAIN_ERROR_POLICY is set to: "</span>
+ <span class="special"><<</span> <span class="identifier">BOOST_STRINGIZE</span><span class="special">(</span><span class="identifier">BOOST_MATH_DOMAIN_ERROR_POLICY</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">double</span> <span class="identifier">degrees_of_freedom</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span> <span class="comment">// A bad argument!</span>
+ <span class="keyword">double</span> <span class="identifier">t</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
+
+ <span class="keyword">try</span>
+ <span class="special">{</span>
+ <span class="identifier">errno</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="comment">// Clear/reset.</span>
+ <span class="identifier">students_t</span> <span class="identifier">dist</span><span class="special">(</span><span class="identifier">degrees_of_freedom</span><span class="special">);</span> <span class="comment">// exception is thrown here if enabled.</span>
+ <span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">t</span><span class="special">);</span>
+ <span class="comment">// Test for error reported by other means:</span>
+ <span class="keyword">if</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">isnan</span><span class="special">)(</span><span class="identifier">p</span><span class="special">))</span>
+ <span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"cdf returned a NaN!"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">errno</span> <span class="special">!=</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span> <span class="comment">// So errno has been set.</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"errno is set to: "</span> <span class="special"><<</span> <span class="identifier">errno</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of Student's t is "</span> <span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">catch</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">&</span> <span class="identifier">e</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"\n"</span><span class="string">"Message from thrown exception was:\n "</span> <span class="special"><<</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// int main()</span>
+</pre>
+<p>
+ Here's what the program output looks like with a default build (one that
+ <span class="bold"><strong>does throw exceptions</strong></span>):
+ </p>
+<pre class="programlisting">Example error handling using Student's t function.
+BOOST_MATH_DOMAIN_ERROR_POLICY is set to: throw_on_error
+
+Message from thrown exception was:
+ Error in function boost::math::students_t_distribution<double>::students_t_distribution:
+ Degrees of freedom argument is -1, but must be > 0 !
+</pre>
+<p>
+ Alternatively let's build with:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DOMAIN_ERROR_POLICY</span> <span class="identifier">ignore_error</span>
+</pre>
+<p>
+ Now the program output is:
+ </p>
+<pre class="programlisting">Example error handling using Student's t function.
+BOOST_MATH_DOMAIN_ERROR_POLICY is set to: ignore_error
+cdf returned a NaN!
+</pre>
+<p>
+ And finally let's build with:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DOMAIN_ERROR_POLICY</span> <span class="identifier">errno_on_error</span>
+</pre>
+<p>
+ Which gives the output show errno:
+ </p>
+<pre class="programlisting">Example error handling using Student's t function.
+BOOST_MATH_DOMAIN_ERROR_POLICY is set to: errno_on_error
+cdf returned a NaN!
+errno is set to: 33
+</pre>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ If throwing of exceptions is enabled (the default) but you do <span class="bold"><strong>not</strong></span> have try & catch block, then the program
+ will terminate with an uncaught exception and probably abort.
+ </p>
+<p>
+ Therefore to get the benefit of helpful error messages, enabling <span class="bold"><strong>all exceptions and using try & catch</strong></span> is recommended
+ for most applications.
+ </p>
+<p>
+ However, for simplicity, the is not done for most examples.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="nccs_eg/nccs_power_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="find_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/f_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/f_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,319 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>F Distribution Examples</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="cs_eg/chi_sq_size.html" title="Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation">
+<link rel="next" href="binom_eg.html" title="Binomial Distribution Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="cs_eg/chi_sq_size.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="binom_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_f_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.f_eg"></a><a class="link" href="f_eg.html" title="F Distribution Examples">F Distribution Examples</a>
+</h4></div></div></div>
+<p>
+ Imagine that you want to compare the standard deviations of two sample
+ to determine if they differ in any significant way, in this situation you
+ use the F distribution and perform an F-test. This situation commonly occurs
+ when conducting a process change comparison: "is a new process more
+ consistent that the old one?".
+ </p>
+<p>
+ In this example we'll be using the data for ceramic strength from http://www.itl.nist.gov/div898/handbook/eda/section4/eda42a1.htm.
+ The data for this case study were collected by Said Jahanmir of the NIST
+ Ceramics Division in 1996 in connection with a NIST/industry ceramics consortium
+ for strength optimization of ceramic strength.
+ </p>
+<p>
+ The example program is f_test.cpp,
+ program output has been deliberately made as similar as possible to the
+ DATAPLOT output in the corresponding <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda359.htm" target="_top">NIST
+ EngineeringStatistics Handbook example</a>.
+ </p>
+<p>
+ We'll begin by defining the procedure to conduct the test:
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">f_test</span><span class="special">(</span>
+ <span class="keyword">double</span> <span class="identifier">sd1</span><span class="special">,</span> <span class="comment">// Sample 1 std deviation</span>
+ <span class="keyword">double</span> <span class="identifier">sd2</span><span class="special">,</span> <span class="comment">// Sample 2 std deviation</span>
+ <span class="keyword">double</span> <span class="identifier">N1</span><span class="special">,</span> <span class="comment">// Sample 1 size</span>
+ <span class="keyword">double</span> <span class="identifier">N2</span><span class="special">,</span> <span class="comment">// Sample 2 size</span>
+ <span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">)</span> <span class="comment">// Significance level</span>
+<span class="special">{</span>
+</pre>
+<p>
+ The procedure begins by printing out a summary of our input data:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+
+<span class="comment">// Print header:</span>
+<span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"____________________________________\n"</span>
+ <span class="string">"F test for equal standard deviations\n"</span>
+ <span class="string">"____________________________________\n\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Sample 1:\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of Observations"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">N1</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Sample Standard Deviation"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">sd1</span> <span class="special"><<</span> <span class="string">"\n\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Sample 2:\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of Observations"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">N2</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Sample Standard Deviation"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">sd2</span> <span class="special"><<</span> <span class="string">"\n\n"</span><span class="special">;</span>
+</pre>
+<p>
+ The test statistic for an F-test is simply the ratio of the square of the
+ two standard deviations:
+ </p>
+<p>
+ F = s<sub>1</sub><sup>2</sup> / s<sub>2</sub><sup>2</sup>
+ </p>
+<p>
+ where s<sub>1</sub> is the standard deviation of the first sample and s<sub>2</sub>
+is the standard
+ deviation of the second sample. Or in code:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">F</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">sd1</span> <span class="special">/</span> <span class="identifier">sd2</span><span class="special">);</span>
+<span class="identifier">F</span> <span class="special">*=</span> <span class="identifier">F</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Test Statistic"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">F</span> <span class="special"><<</span> <span class="string">"\n\n"</span><span class="special">;</span>
+</pre>
+<p>
+ At this point a word of caution: the F distribution is asymmetric, so we
+ have to be careful how we compute the tests, the following table summarises
+ the options available:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Hypothesis
+ </p>
+ </th>
+<th>
+ <p>
+ Test
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ The null-hypothesis: there is no difference in standard deviations
+ (two sided test)
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if F <= F<sub>(1-alpha/2; N1-1, N2-1)</sub> or F >= F<sub>(alpha/2;
+ N1-1, N2-1)</sub>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The alternative hypothesis: there is a difference in means (two
+ sided test)
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if F<sub>(1-alpha/2; N1-1, N2-1)</sub> <= F <= F<sub>(alpha/2; N1-1,
+ N2-1)</sub>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The alternative hypothesis: Standard deviation of sample 1 is
+ greater than that of sample 2
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if F < F<sub>(alpha; N1-1, N2-1)</sub>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The alternative hypothesis: Standard deviation of sample 1 is
+ less than that of sample 2
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if F > F<sub>(1-alpha; N1-1, N2-1)</sub>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Where F<sub>(1-alpha; N1-1, N2-1)</sub> is the lower critical value of the F distribution
+ with degrees of freedom N1-1 and N2-1, and F<sub>(alpha; N1-1, N2-1)</sub> is the upper
+ critical value of the F distribution with degrees of freedom N1-1 and N2-1.
+ </p>
+<p>
+ The upper and lower critical values can be computed using the quantile
+ function:
+ </p>
+<p>
+ F<sub>(1-alpha; N1-1, N2-1)</sub> = <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">fisher_f</span><span class="special">(</span><span class="identifier">N1</span><span class="special">-</span><span class="number">1</span><span class="special">,</span> <span class="identifier">N2</span><span class="special">-</span><span class="number">1</span><span class="special">),</span>
+ <span class="identifier">alpha</span><span class="special">)</span></code>
+ </p>
+<p>
+ F<sub>(alpha; N1-1, N2-1)</sub> = <code class="computeroutput"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">fisher_f</span><span class="special">(</span><span class="identifier">N1</span><span class="special">-</span><span class="number">1</span><span class="special">,</span> <span class="identifier">N2</span><span class="special">-</span><span class="number">1</span><span class="special">),</span>
+ <span class="identifier">alpha</span><span class="special">))</span></code>
+ </p>
+<p>
+ In our example program we need both upper and lower critical values for
+ alpha and for alpha/2:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">ucv</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">));</span>
+<span class="keyword">double</span> <span class="identifier">ucv2</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span> <span class="special">/</span> <span class="number">2</span><span class="special">));</span>
+<span class="keyword">double</span> <span class="identifier">lcv</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">lcv2</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span> <span class="special">/</span> <span class="number">2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Upper Critical Value at alpha: "</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="identifier">ucv</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Upper Critical Value at alpha/2: "</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="identifier">ucv2</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Lower Critical Value at alpha: "</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="identifier">lcv</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Lower Critical Value at alpha/2: "</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="identifier">lcv2</span> <span class="special"><<</span> <span class="string">"\n\n"</span><span class="special">;</span>
+</pre>
+<p>
+ The final step is to perform the comparisons given above, and print out
+ whether the hypothesis is rejected or not:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span>
+ <span class="string">"Results for Alternative Hypothesis and alpha"</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">4</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">alpha</span> <span class="special"><<</span> <span class="string">"\n\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Alternative Hypothesis Conclusion\n"</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard deviations are unequal (two sided test) "</span><span class="special">;</span>
+<span class="keyword">if</span><span class="special">((</span><span class="identifier">ucv2</span> <span class="special"><</span> <span class="identifier">F</span><span class="special">)</span> <span class="special">||</span> <span class="special">(</span><span class="identifier">lcv2</span> <span class="special">></span> <span class="identifier">F</span><span class="special">))</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ACCEPTED\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"REJECTED\n"</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard deviation 1 is less than standard deviation 2 "</span><span class="special">;</span>
+<span class="keyword">if</span><span class="special">(</span><span class="identifier">lcv</span> <span class="special">></span> <span class="identifier">F</span><span class="special">)</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ACCEPTED\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"REJECTED\n"</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard deviation 1 is greater than standard deviation 2 "</span><span class="special">;</span>
+<span class="keyword">if</span><span class="special">(</span><span class="identifier">ucv</span> <span class="special"><</span> <span class="identifier">F</span><span class="special">)</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ACCEPTED\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"REJECTED\n"</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Using the ceramic strength data as an example we get the following output:
+ </p>
+<pre class="programlisting">F test for equal standard deviations
+____________________________________
+
+Sample 1:
+Number of Observations = 240
+Sample Standard Deviation = 65.549
+
+Sample 2:
+Number of Observations = 240
+Sample Standard Deviation = 61.854
+
+Test Statistic = 1.123
+
+CDF of test statistic: = 8.148e-001
+Upper Critical Value at alpha: = 1.238e+000
+Upper Critical Value at alpha/2: = 1.289e+000
+Lower Critical Value at alpha: = 8.080e-001
+Lower Critical Value at alpha/2: = 7.756e-001
+
+Results for Alternative Hypothesis and alpha = 0.0500
+
+Alternative Hypothesis Conclusion
+Standard deviations are unequal (two sided test) REJECTED
+Standard deviation 1 is less than standard deviation 2 REJECTED
+Standard deviation 1 is greater than standard deviation 2 REJECTED
+</pre>
+<p>
+ In this case we are unable to reject the null-hypothesis, and must instead
+ reject the alternative hypothesis.
+ </p>
+<p>
+ By contrast let's see what happens when we use some different <a href="http://www.itl.nist.gov/div898/handbook/prc/section3/prc32.htm" target="_top">sample
+ data</a>:, once again from the NIST Engineering Statistics Handbook:
+ A new procedure to assemble a device is introduced and tested for possible
+ improvement in time of assembly. The question being addressed is whether
+ the standard deviation of the new assembly process (sample 2) is better
+ (i.e., smaller) than the standard deviation for the old assembly process
+ (sample 1).
+ </p>
+<pre class="programlisting">____________________________________
+F test for equal standard deviations
+____________________________________
+
+Sample 1:
+Number of Observations = 11.00000
+Sample Standard Deviation = 4.90820
+
+Sample 2:
+Number of Observations = 9.00000
+Sample Standard Deviation = 2.58740
+
+Test Statistic = 3.59847
+
+CDF of test statistic: = 9.589e-001
+Upper Critical Value at alpha: = 3.347e+000
+Upper Critical Value at alpha/2: = 4.295e+000
+Lower Critical Value at alpha: = 3.256e-001
+Lower Critical Value at alpha/2: = 2.594e-001
+
+Results for Alternative Hypothesis and alpha = 0.0500
+
+Alternative Hypothesis Conclusion
+Standard deviations are unequal (two sided test) REJECTED
+Standard deviation 1 is less than standard deviation 2 REJECTED
+Standard deviation 1 is greater than standard deviation 2 ACCEPTED
+</pre>
+<p>
+ In this case we take our null hypothesis as "standard deviation 1
+ is less than or equal to standard deviation 2", since this represents
+ the "no change" situation. So we want to compare the upper critical
+ value at <span class="emphasis"><em>alpha</em></span> (a one sided test) with the test statistic,
+ and since 3.35 < 3.6 this hypothesis must be rejected. We therefore
+ conclude that there is a change for the better in our standard deviation.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="cs_eg/chi_sq_size.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="binom_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Find Location and Scale Examples</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="error_eg.html" title="Error Handling Example">
+<link rel="next" href="find_eg/find_location_eg.html" title="Find Location (Mean) Example">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="error_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="find_eg/find_location_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_find_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.find_eg"></a><a class="link" href="find_eg.html" title="Find Location and Scale Examples">Find Location and
+ Scale Examples</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="find_eg/find_location_eg.html">Find
+ Location (Mean) Example</a></span></dt>
+<dt><span class="section"><a href="find_eg/find_scale_eg.html">Find
+ Scale (Standard Deviation) Example</a></span></dt>
+<dt><span class="section"><a href="find_eg/find_mean_and_sd_eg.html">Find
+ mean and standard deviation example</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="error_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="find_eg/find_location_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/find_location_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/find_location_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,180 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Find Location (Mean) Example</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../find_eg.html" title="Find Location and Scale Examples">
+<link rel="prev" href="../find_eg.html" title="Find Location and Scale Examples">
+<link rel="next" href="find_scale_eg.html" title="Find Scale (Standard Deviation) Example">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../find_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../find_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="find_scale_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_find_eg_find_location_eg">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.find_eg.find_location_eg"></a><a class="link" href="find_location_eg.html" title="Find Location (Mean) Example">Find
+ Location (Mean) Example</a>
+</h5></div></div></div>
+<p>
+ First we need some includes to access the normal distribution, the algorithms
+ to find location (and some std output of course).
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for normal_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">cauchy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for cauchy_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cauchy</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">find_location</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">find_location</span><span class="special">;</span> <span class="comment">// for mean</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">find_scale</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">find_scale</span><span class="special">;</span> <span class="comment">// for standard devation</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">complement</span><span class="special">;</span> <span class="comment">// Needed if you want to use the complement version.</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">;</span>
+</pre>
+<p>
+ For this example, we will use the standard normal distribution, with
+ mean (location) zero and standard deviation (scale) unity. This is also
+ the default for this implementation.
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">N01</span><span class="special">;</span> <span class="comment">// Default 'standard' normal distribution with zero mean and </span>
+<span class="keyword">double</span> <span class="identifier">sd</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span> <span class="comment">// normal default standard deviation is 1.</span>
+</pre>
+<p>
+ Suppose we want to find a different normal distribution whose mean is
+ shifted so that only fraction p (here 0.001 or 0.1%) are below a certain
+ chosen limit (here -2, two standard deviations).
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">z</span> <span class="special">=</span> <span class="special">-</span><span class="number">2.</span><span class="special">;</span> <span class="comment">// z to give prob p</span>
+<span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="number">0.001</span><span class="special">;</span> <span class="comment">// only 0.1% below z</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">N01</span><span class="special">.</span><span class="identifier">location</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">", standard deviation "</span> <span class="special"><<</span> <span class="identifier">N01</span><span class="special">.</span><span class="identifier">scale</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">", has "</span> <span class="special"><<</span> <span class="string">"fraction <= "</span> <span class="special"><<</span> <span class="identifier">z</span>
+ <span class="special"><<</span> <span class="string">", p = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">N01</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">N01</span><span class="special">.</span><span class="identifier">location</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">", standard deviation "</span> <span class="special"><<</span> <span class="identifier">N01</span><span class="special">.</span><span class="identifier">scale</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">", has "</span> <span class="special"><<</span> <span class="string">"fraction > "</span> <span class="special"><<</span> <span class="identifier">z</span>
+ <span class="special"><<</span> <span class="string">", p = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">N01</span><span class="special">,</span> <span class="identifier">z</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Note: uses complement.</span>
+</pre>
+<pre class="programlisting">Normal distribution with mean = 0, standard deviation 1, has fraction <= -2, p = 0.0227501
+Normal distribution with mean = 0, standard deviation 1, has fraction > -2, p = 0.97725
+</pre>
+<p>
+ We can now use ''find_location'' to give a new offset mean.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_location</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"offset location (mean) = "</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ that outputs:
+ </p>
+<pre class="programlisting">offset location (mean) = 1.09023
+</pre>
+<p>
+ showing that we need to shift the mean just over one standard deviation
+ from its previous value of zero.
+ </p>
+<p>
+ Then we can check that we have achieved our objective by constructing
+ a new distribution with the offset mean (but same standard deviation):
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">np001pc</span><span class="special">(</span><span class="identifier">l</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">);</span> <span class="comment">// Same standard_deviation (scale) but with mean (location) shifted.</span>
+</pre>
+<p>
+ And re-calculating the fraction below our chosen limit.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">l</span>
+ <span class="special"><<</span> <span class="string">" has "</span> <span class="special"><<</span> <span class="string">"fraction <= "</span> <span class="special"><<</span> <span class="identifier">z</span>
+ <span class="special"><<</span> <span class="string">", p = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">np001pc</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">l</span>
+ <span class="special"><<</span> <span class="string">" has "</span> <span class="special"><<</span> <span class="string">"fraction > "</span> <span class="special"><<</span> <span class="identifier">z</span>
+ <span class="special"><<</span> <span class="string">", p = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">np001pc</span><span class="special">,</span> <span class="identifier">z</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Normal distribution with mean = 1.09023 has fraction <= -2, p = 0.001
+Normal distribution with mean = 1.09023 has fraction > -2, p = 0.999
+</pre>
+<h5>
+<a name="math_toolkit.stat_tut.weg.find_eg.find_location_eg.h0"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.find_eg.find_location_eg.controlling_error_handling_from_"></a></span><a class="link" href="find_location_eg.html#math_toolkit.stat_tut.weg.find_eg.find_location_eg.controlling_error_handling_from_">Controlling
+ Error Handling from find_location</a>
+ </h5>
+<p>
+ We can also control the policy for handling various errors. For example,
+ we can define a new (possibly unwise) policy to ignore domain errors
+ ('bad' arguments).
+ </p>
+<p>
+ Unless we are using the boost::math namespace, we will need:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">ignore_error</span><span class="special">;</span>
+</pre>
+<p>
+ Using a typedef is often convenient, especially if it is re-used, although
+ it is not required, as the various examples below show.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">ignore_error</span><span class="special">></span> <span class="special">></span> <span class="identifier">ignore_domain_policy</span><span class="special">;</span>
+<span class="comment">// find_location with new policy, using typedef.</span>
+<span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_location</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">,</span> <span class="identifier">ignore_domain_policy</span><span class="special">());</span>
+<span class="comment">// Default policy policy<>, needs "using boost::math::policies::policy;"</span>
+<span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_location</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">,</span> <span class="identifier">policy</span><span class="special"><>());</span>
+<span class="comment">// Default policy, fully specified.</span>
+<span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_location</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><>());</span>
+<span class="comment">// A new policy, ignoring domain errors, without using a typedef.</span>
+<span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_location</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">,</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">ignore_error</span><span class="special">></span> <span class="special">>());</span>
+</pre>
+<p>
+ If we want to use a probability that is the <a class="link" href="../../overview/complements.html" title="Complements are supported too - and when to use them">complement
+ of our probability</a>, we should not even think of writing <code class="computeroutput"><span class="identifier">find_location</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">)</span></code>, but, <a class="link" href="../../overview/complements.html#why_complements">to
+ avoid loss of accuracy</a>, use the complement version.
+ </p>
+<pre class="programlisting"><span class="identifier">z</span> <span class="special">=</span> <span class="number">2.</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">q</span> <span class="special">=</span> <span class="number">0.95</span><span class="special">;</span> <span class="comment">// = 1 - p; // complement.</span>
+<span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_location</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">q</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">));</span>
+
+<span class="identifier">normal</span> <span class="identifier">np95pc</span><span class="special">(</span><span class="identifier">l</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">);</span> <span class="comment">// Same standard_deviation (scale) but with mean(location) shifted</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="string">" has "</span>
+ <span class="special"><<</span> <span class="string">"fraction <= "</span> <span class="special"><<</span> <span class="identifier">z</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">np95pc</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="string">" has "</span>
+ <span class="special"><<</span> <span class="string">"fraction > "</span> <span class="special"><<</span> <span class="identifier">z</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">np95pc</span><span class="special">,</span> <span class="identifier">z</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ See find_location_example.cpp
+ for full source code: the program output looks like this:
+ </p>
+<pre class="programlisting">Example: Find location (mean).
+Normal distribution with mean = 0, standard deviation 1, has fraction <= -2, p = 0.0227501
+Normal distribution with mean = 0, standard deviation 1, has fraction > -2, p = 0.97725
+offset location (mean) = 1.09023
+Normal distribution with mean = 1.09023 has fraction <= -2, p = 0.001
+Normal distribution with mean = 1.09023 has fraction > -2, p = 0.999
+Normal distribution with mean = 0.355146 has fraction <= 2 = 0.95
+Normal distribution with mean = 0.355146 has fraction > 2 = 0.05
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../find_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../find_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="find_scale_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,445 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Find mean and standard deviation example</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../find_eg.html" title="Find Location and Scale Examples">
+<link rel="prev" href="find_scale_eg.html" title="Find Scale (Standard Deviation) Example">
+<link rel="next" href="../nag_library.html" title="Comparison with C, R, FORTRAN-style Free Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="find_scale_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../find_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../nag_library.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_find_eg_find_mean_and_sd_eg">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg"></a><a class="link" href="find_mean_and_sd_eg.html" title="Find mean and standard deviation example">Find
+ mean and standard deviation example</a>
+</h5></div></div></div>
+<p>
+ First we need some includes to access the normal distribution, the algorithms
+ to find location and scale (and some std output of course).
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for normal_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">cauchy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for cauchy_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cauchy</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">find_location</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">find_location</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">find_scale</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">find_scale</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">complement</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpoint</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">noshowpoint</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">stdexcept</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">;</span>
+</pre>
+<h5>
+<a name="math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg.h0"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg.using_find_location_and_find_sca"></a></span><a class="link" href="find_mean_and_sd_eg.html#math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg.using_find_location_and_find_sca">Using
+ find_location and find_scale to meet dispensing and measurement specifications</a>
+ </h5>
+<p>
+ Consider an example from K Krishnamoorthy, Handbook of Statistical Distributions
+ with Applications, ISBN 1-58488-635-8, (2006) p 126, example 10.3.7.
+ </p>
+<p>
+ "A machine is set to pack 3 kg of ground beef per pack. Over a long
+ period of time it is found that the average packed was 3 kg with a standard
+ deviation of 0.1 kg. Assume the packing is normally distributed."
+ </p>
+<p>
+ We start by constructing a normal distribution with the given parameters:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="number">3.</span><span class="special">;</span> <span class="comment">// kg</span>
+<span class="keyword">double</span> <span class="identifier">standard_deviation</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">;</span> <span class="comment">// kg</span>
+<span class="identifier">normal</span> <span class="identifier">packs</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+</pre>
+<p>
+ We can then find the fraction (or %) of packages that weigh more than
+ 3.1 kg.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">max_weight</span> <span class="special">=</span> <span class="number">3.1</span><span class="special">;</span> <span class="comment">// kg</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Percentage of packs > "</span> <span class="special"><<</span> <span class="identifier">max_weight</span> <span class="special"><<</span> <span class="string">" is "</span>
+<span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">packs</span><span class="special">,</span> <span class="identifier">max_weight</span><span class="special">))</span> <span class="special">*</span> <span class="number">100.</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// P(X > 3.1)</span>
+</pre>
+<p>
+ We might want to ensure that 95% of packs are over a minimum weight specification,
+ then we want the value of the mean such that P(X < 2.9) = 0.05.
+ </p>
+<p>
+ Using the mean of 3 kg, we can estimate the fraction of packs that fail
+ to meet the specification of 2.9 kg.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">minimum_weight</span> <span class="special">=</span> <span class="number">2.9</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"Fraction of packs <= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span> <span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">mean</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">packs</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// fraction of packs <= 2.9 with a mean of 3 is 0.841345</span>
+</pre>
+<p>
+ This is 0.84 - more than the target fraction of 0.95. If we want 95%
+ to be over the minimum weight, what should we set the mean weight to
+ be?
+ </p>
+<p>
+ Using the KK StatCalc program supplied with the book and the method given
+ on page 126 gives 3.06449.
+ </p>
+<p>
+ We can confirm this by constructing a new distribution which we call
+ 'xpacks' with a safety margin mean of 3.06449 thus:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">over_mean</span> <span class="special">=</span> <span class="number">3.06449</span><span class="special">;</span>
+<span class="identifier">normal</span> <span class="identifier">xpacks</span><span class="special">(</span><span class="identifier">over_mean</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span>
+<span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">xpacks</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">xpacks</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// fraction of packs >= 2.9 with a mean of 3.06449 is 0.950005</span>
+</pre>
+<p>
+ Using this Math Toolkit, we can calculate the required mean directly
+ thus:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">under_fraction</span> <span class="special">=</span> <span class="number">0.05</span><span class="special">;</span> <span class="comment">// so 95% are above the minimum weight mean - sd = 2.9</span>
+<span class="keyword">double</span> <span class="identifier">low_limit</span> <span class="special">=</span> <span class="identifier">standard_deviation</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">offset</span> <span class="special">=</span> <span class="identifier">mean</span> <span class="special">-</span> <span class="identifier">low_limit</span> <span class="special">-</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">packs</span><span class="special">,</span> <span class="identifier">under_fraction</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">nominal_mean</span> <span class="special">=</span> <span class="identifier">mean</span> <span class="special">+</span> <span class="identifier">offset</span><span class="special">;</span>
+<span class="comment">// mean + (mean - low_limit - quantile(packs, under_fraction));</span>
+
+<span class="identifier">normal</span> <span class="identifier">nominal_packs</span><span class="special">(</span><span class="identifier">nominal_mean</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Setting the packer to "</span> <span class="special"><<</span> <span class="identifier">nominal_mean</span> <span class="special"><<</span> <span class="string">" will mean that "</span>
+ <span class="special"><<</span> <span class="string">"fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">nominal_packs</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95</span>
+</pre>
+<p>
+ This calculation is generalized as the free function called <a class="link" href="../../../dist_ref/dist_algorithms.html" title="Distribution Algorithms">find_location</a>.
+ </p>
+<p>
+ To use this we will need to
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">find_location</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">find_location</span><span class="special">;</span>
+</pre>
+<p>
+ and then use find_location function to find safe_mean, & construct
+ a new normal distribution called 'goodpacks'.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">safe_mean</span> <span class="special">=</span> <span class="identifier">find_location</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">minimum_weight</span><span class="special">,</span> <span class="identifier">under_fraction</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+<span class="identifier">normal</span> <span class="identifier">good_packs</span><span class="special">(</span><span class="identifier">safe_mean</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+</pre>
+<p>
+ with the same confirmation as before:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Setting the packer to "</span> <span class="special"><<</span> <span class="identifier">nominal_mean</span> <span class="special"><<</span> <span class="string">" will mean that "</span>
+ <span class="special"><<</span> <span class="string">"fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">good_packs</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95</span>
+</pre>
+<h5>
+<a name="math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg.h1"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg.using_cauchy_lorentz_instead_of_"></a></span><a class="link" href="find_mean_and_sd_eg.html#math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg.using_cauchy_lorentz_instead_of_">Using
+ Cauchy-Lorentz instead of normal distribution</a>
+ </h5>
+<p>
+ After examining the weight distribution of a large number of packs, we
+ might decide that, after all, the assumption of a normal distribution
+ is not really justified. We might find that the fit is better to a <a class="link" href="../../../dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution">Cauchy Distribution</a>.
+ This distribution has wider 'wings', so that whereas most of the values
+ are closer to the mean than the normal, there are also more values than
+ 'normal' that lie further from the mean than the normal.
+ </p>
+<p>
+ This might happen because a larger than normal lump of meat is either
+ included or excluded.
+ </p>
+<p>
+ We first create a <a class="link" href="../../../dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution">Cauchy
+ Distribution</a> with the original mean and standard deviation, and
+ estimate the fraction that lie below our minimum weight specification.
+ </p>
+<pre class="programlisting"><span class="identifier">cauchy</span> <span class="identifier">cpacks</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Cauchy Setting the packer to "</span> <span class="special"><<</span> <span class="identifier">mean</span> <span class="special"><<</span> <span class="string">" will mean that "</span>
+ <span class="special"><<</span> <span class="string">"fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">cpacks</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Cauchy Setting the packer to 3 will mean that fraction of packs >= 2.9 is 0.75</span>
+</pre>
+<p>
+ Note that far fewer of the packs meet the specification, only 75% instead
+ of 95%. Now we can repeat the find_location, using the cauchy distribution
+ as template parameter, in place of the normal used above.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">lc</span> <span class="special">=</span> <span class="identifier">find_location</span><span class="special"><</span><span class="identifier">cauchy</span><span class="special">>(</span><span class="identifier">minimum_weight</span><span class="special">,</span> <span class="identifier">under_fraction</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"find_location<cauchy>(minimum_weight, over fraction, standard_deviation); "</span> <span class="special"><<</span> <span class="identifier">lc</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// find_location<cauchy>(minimum_weight, over fraction, packs.standard_deviation()); 3.53138</span>
+</pre>
+<p>
+ Note that the safe_mean setting needs to be much higher, 3.53138 instead
+ of 3.06449, so we will make rather less profit.
+ </p>
+<p>
+ And again confirm that the fraction meeting specification is as expected.
+ </p>
+<pre class="programlisting"><span class="identifier">cauchy</span> <span class="identifier">goodcpacks</span><span class="special">(</span><span class="identifier">lc</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Cauchy Setting the packer to "</span> <span class="special"><<</span> <span class="identifier">lc</span> <span class="special"><<</span> <span class="string">" will mean that "</span>
+ <span class="special"><<</span> <span class="string">"fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">goodcpacks</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Cauchy Setting the packer to 3.53138 will mean that fraction of packs >= 2.9 is 0.95</span>
+</pre>
+<p>
+ Finally we could estimate the effect of a much tighter specification,
+ that 99% of packs met the specification.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Cauchy Setting the packer to "</span>
+ <span class="special"><<</span> <span class="identifier">find_location</span><span class="special"><</span><span class="identifier">cauchy</span><span class="special">>(</span><span class="identifier">minimum_weight</span><span class="special">,</span> <span class="number">0.99</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">" will mean that "</span>
+ <span class="special"><<</span> <span class="string">"fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">goodcpacks</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Setting the packer to 3.13263 will mean that fraction of packs >=
+ 2.9 is 0.99, but will more than double the mean loss from 0.0644 to 0.133
+ kg per pack.
+ </p>
+<p>
+ Of course, this calculation is not limited to packs of meat, it applies
+ to dispensing anything, and it also applies to a 'virtual' material like
+ any measurement.
+ </p>
+<p>
+ The only caveat is that the calculation assumes that the standard deviation
+ (scale) is known with a reasonably low uncertainty, something that is
+ not so easy to ensure in practice. And that the distribution is well
+ defined, <a class="link" href="../../../dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution">Normal
+ Distribution</a> or <a class="link" href="../../../dist_ref/dists/cauchy_dist.html" title="Cauchy-Lorentz Distribution">Cauchy
+ Distribution</a>, or some other.
+ </p>
+<p>
+ If one is simply dispensing a very large number of packs, then it may
+ be feasible to measure the weight of hundreds or thousands of packs.
+ With a healthy 'degrees of freedom', the confidence intervals for the
+ standard deviation are not too wide, typically about + and - 10% for
+ hundreds of observations.
+ </p>
+<p>
+ For other applications, where it is more difficult or expensive to make
+ many observations, the confidence intervals are depressingly wide.
+ </p>
+<p>
+ See <a class="link" href="../cs_eg/chi_sq_intervals.html" title="Confidence Intervals on the Standard Deviation">Confidence
+ Intervals on the standard deviation</a> for a worked example chi_square_std_dev_test.cpp
+ of estimating these intervals.
+ </p>
+<h5>
+<a name="math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg.h2"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg.changing_the_scale_or_standard_d"></a></span><a class="link" href="find_mean_and_sd_eg.html#math_toolkit.stat_tut.weg.find_eg.find_mean_and_sd_eg.changing_the_scale_or_standard_d">Changing
+ the scale or standard deviation</a>
+ </h5>
+<p>
+ Alternatively, we could invest in a better (more precise) packer (or
+ measuring device) with a lower standard deviation, or scale.
+ </p>
+<p>
+ This might cost more, but would reduce the amount we have to 'give away'
+ in order to meet the specification.
+ </p>
+<p>
+ To estimate how much better (how much smaller standard deviation) it
+ would have to be, we need to get the 5% quantile to be located at the
+ under_weight limit, 2.9
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="number">0.05</span><span class="special">;</span> <span class="comment">// wanted p th quantile.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Quantile of "</span> <span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">packs</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">", mean = "</span> <span class="special"><<</span> <span class="identifier">packs</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span> <span class="special"><<</span> <span class="string">", sd = "</span> <span class="special"><<</span> <span class="identifier">packs</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Quantile of 0.05 = 2.83551, mean = 3, sd = 0.1
+ </p>
+<p>
+ With the current packer (mean = 3, sd = 0.1), the 5% quantile is at 2.8551
+ kg, a little below our target of 2.9 kg. So we know that the standard
+ deviation is going to have to be smaller.
+ </p>
+<p>
+ Let's start by guessing that it (now 0.1) needs to be halved, to a standard
+ deviation of 0.05 kg.
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">pack05</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Quantile of "</span> <span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">pack05</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">", mean = "</span> <span class="special"><<</span> <span class="identifier">pack05</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span> <span class="special"><<</span> <span class="string">", sd = "</span> <span class="special"><<</span> <span class="identifier">pack05</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Quantile of 0.05 = 2.91776, mean = 3, sd = 0.05</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"Fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span> <span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">mean</span>
+ <span class="special"><<</span> <span class="string">" and standard deviation of "</span> <span class="special"><<</span> <span class="identifier">pack05</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">pack05</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.05 is 0.97725</span>
+</pre>
+<p>
+ So 0.05 was quite a good guess, but we are a little over the 2.9 target,
+ so the standard deviation could be a tiny bit more. So we could do some
+ more guessing to get closer, say by increasing standard deviation to
+ 0.06 kg, constructing another new distribution called pack06.
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">pack06</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="number">0.06</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Quantile of "</span> <span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">pack06</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">", mean = "</span> <span class="special"><<</span> <span class="identifier">pack06</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span> <span class="special"><<</span> <span class="string">", sd = "</span> <span class="special"><<</span> <span class="identifier">pack06</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Quantile of 0.05 = 2.90131, mean = 3, sd = 0.06</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"Fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span> <span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">mean</span>
+ <span class="special"><<</span> <span class="string">" and standard deviation of "</span> <span class="special"><<</span> <span class="identifier">pack06</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">pack06</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.06 is 0.95221</span>
+</pre>
+<p>
+ Now we are getting really close, but to do the job properly, we might
+ need to use root finding method, for example the tools provided, and
+ used elsewhere, in the Math Toolkit, see <a class="link" href="../../../internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748">Root
+ Finding Without Derivatives</a>.
+ </p>
+<p>
+ But in this (normal) distribution case, we can and should be even smarter
+ and make a direct calculation.
+ </p>
+<p>
+ Our required limit is minimum_weight = 2.9 kg, often called the random
+ variate z. For a standard normal distribution, then probability p = N((minimum_weight
+ - mean) / sd).
+ </p>
+<p>
+ We want to find the standard deviation that would be required to meet
+ this limit, so that the p th quantile is located at z (minimum_weight).
+ In this case, the 0.05 (5%) quantile is at 2.9 kg pack weight, when the
+ mean is 3 kg, ensuring that 0.95 (95%) of packs are above the minimum
+ weight.
+ </p>
+<p>
+ Rearranging, we can directly calculate the required standard deviation:
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">N01</span><span class="special">;</span> <span class="comment">// standard normal distribution with meamn zero and unit standard deviation.</span>
+<span class="identifier">p</span> <span class="special">=</span> <span class="number">0.05</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">qp</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">N01</span><span class="special">,</span> <span class="identifier">p</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">sd95</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">minimum_weight</span> <span class="special">-</span> <span class="identifier">mean</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">qp</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"For the "</span><span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="string">"th quantile to be located at "</span>
+ <span class="special"><<</span> <span class="identifier">minimum_weight</span> <span class="special"><<</span> <span class="string">", would need a standard deviation of "</span> <span class="special"><<</span> <span class="identifier">sd95</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// For the 0.05th quantile to be located at 2.9, would need a standard deviation of 0.0607957</span>
+</pre>
+<p>
+ We can now construct a new (normal) distribution pack95 for the 'better'
+ packer, and check that our distribution will meet the specification.
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">pack95</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="identifier">sd95</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"Fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span> <span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">mean</span>
+ <span class="special"><<</span> <span class="string">" and standard deviation of "</span> <span class="special"><<</span> <span class="identifier">pack95</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">pack95</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0607957 is 0.95</span>
+</pre>
+<p>
+ This calculation is generalized in the free function find_scale, as shown
+ below, giving the same standard deviation.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">ss</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">minimum_weight</span><span class="special">,</span> <span class="identifier">under_fraction</span><span class="special">,</span> <span class="identifier">packs</span><span class="special">.</span><span class="identifier">mean</span><span class="special">());</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"find_scale<normal>(minimum_weight, under_fraction, packs.mean()); "</span> <span class="special"><<</span> <span class="identifier">ss</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// find_scale<normal>(minimum_weight, under_fraction, packs.mean()); 0.0607957</span>
+</pre>
+<p>
+ If we had defined an over_fraction, or percentage that must pass specification
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">over_fraction</span> <span class="special">=</span> <span class="number">0.95</span><span class="special">;</span>
+</pre>
+<p>
+ And (wrongly) written
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">sso</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">minimum_weight</span><span class="special">,</span> <span class="identifier">over_fraction</span><span class="special">,</span> <span class="identifier">packs</span><span class="special">.</span><span class="identifier">mean</span><span class="special">());</span>
+</pre>
+<p>
+ With the default policy, we would get a message like
+ </p>
+<pre class="programlisting">Message from thrown exception was:
+ Error in function boost::math::find_scale<Dist, Policy>(double, double, double, Policy):
+ Computed scale (-0.060795683191176959) is <= 0! Was the complement intended?
+</pre>
+<p>
+ But this would return a <span class="bold"><strong>negative</strong></span> standard
+ deviation - obviously impossible. The probability should be 1 - over_fraction,
+ not over_fraction, thus:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">ss1o</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">minimum_weight</span><span class="special">,</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">over_fraction</span><span class="special">,</span> <span class="identifier">packs</span><span class="special">.</span><span class="identifier">mean</span><span class="special">());</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"find_scale<normal>(minimum_weight, under_fraction, packs.mean()); "</span> <span class="special"><<</span> <span class="identifier">ss1o</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// find_scale<normal>(minimum_weight, under_fraction, packs.mean()); 0.0607957</span>
+</pre>
+<p>
+ But notice that using '1 - over_fraction' - will lead to a <a class="link" href="../../overview/complements.html#why_complements">loss
+ of accuracy, especially if over_fraction was close to unity.</a> In
+ this (very common) case, we should instead use the <a class="link" href="../../overview/complements.html" title="Complements are supported too - and when to use them">complements</a>,
+ giving the most accurate result.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">ssc</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">minimum_weight</span><span class="special">,</span> <span class="identifier">over_fraction</span><span class="special">,</span> <span class="identifier">packs</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()));</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"find_scale<normal>(complement(minimum_weight, over_fraction, packs.mean())); "</span> <span class="special"><<</span> <span class="identifier">ssc</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// find_scale<normal>(complement(minimum_weight, over_fraction, packs.mean())); 0.0607957</span>
+</pre>
+<p>
+ Note that our guess of 0.06 was close to the accurate value of 0.060795683191176959.
+ </p>
+<p>
+ We can again confirm our prediction thus:
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">pack95c</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="identifier">ssc</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"Fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">minimum_weight</span> <span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">mean</span>
+ <span class="special"><<</span> <span class="string">" and standard deviation of "</span> <span class="special"><<</span> <span class="identifier">pack95c</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">pack95c</span><span class="special">,</span> <span class="identifier">minimum_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0607957 is 0.95</span>
+</pre>
+<p>
+ Notice that these two deceptively simple questions:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Do we over-fill to make sure we meet a minimum specification (or
+ under-fill to avoid an overdose)?
+ </li></ul></div>
+<p>
+ and/or
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Do we measure better?
+ </li></ul></div>
+<p>
+ are actually extremely common.
+ </p>
+<p>
+ The weight of beef might be replaced by a measurement of more or less
+ anything, from drug tablet content, Apollo landing rocket firing, X-ray
+ treatment doses...
+ </p>
+<p>
+ The scale can be variation in dispensing or uncertainty in measurement.
+ </p>
+<p>
+ See find_mean_and_sd_normal.cpp
+ for full source code & appended program output.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="find_scale_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../find_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../nag_library.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,199 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Find Scale (Standard Deviation) Example</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../find_eg.html" title="Find Location and Scale Examples">
+<link rel="prev" href="find_location_eg.html" title="Find Location (Mean) Example">
+<link rel="next" href="find_mean_and_sd_eg.html" title="Find mean and standard deviation example">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="find_location_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../find_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="find_mean_and_sd_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_find_eg_find_scale_eg">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.find_eg.find_scale_eg"></a><a class="link" href="find_scale_eg.html" title="Find Scale (Standard Deviation) Example">Find
+ Scale (Standard Deviation) Example</a>
+</h5></div></div></div>
+<p>
+ First we need some includes to access the <a class="link" href="../../../dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution">Normal
+ Distribution</a>, the algorithms to find scale (and some std output
+ of course).
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for normal_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">find_scale</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">find_scale</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">complement</span><span class="special">;</span> <span class="comment">// Needed if you want to use the complement version.</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span> <span class="comment">// Needed to specify the error handling policy.</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">;</span>
+</pre>
+<p>
+ For this example, we will use the standard <a class="link" href="../../../dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution">Normal
+ Distribution</a>, with location (mean) zero and standard deviation
+ (scale) unity. Conveniently, this is also the default for this implementation's
+ constructor.
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">N01</span><span class="special">;</span> <span class="comment">// Default 'standard' normal distribution with zero mean</span>
+<span class="keyword">double</span> <span class="identifier">sd</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span> <span class="comment">// and standard deviation is 1.</span>
+</pre>
+<p>
+ Suppose we want to find a different normal distribution with standard
+ deviation so that only fraction p (here 0.001 or 0.1%) are below a certain
+ chosen limit (here -2. standard deviations).
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">z</span> <span class="special">=</span> <span class="special">-</span><span class="number">2.</span><span class="special">;</span> <span class="comment">// z to give prob p</span>
+<span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="number">0.001</span><span class="special">;</span> <span class="comment">// only 0.1% below z = -2</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">N01</span><span class="special">.</span><span class="identifier">location</span><span class="special">()</span> <span class="comment">// aka N01.mean()</span>
+ <span class="special"><<</span> <span class="string">", standard deviation "</span> <span class="special"><<</span> <span class="identifier">N01</span><span class="special">.</span><span class="identifier">scale</span><span class="special">()</span> <span class="comment">// aka N01.standard_deviation()</span>
+ <span class="special"><<</span> <span class="string">", has "</span> <span class="special"><<</span> <span class="string">"fraction <= "</span> <span class="special"><<</span> <span class="identifier">z</span>
+ <span class="special"><<</span> <span class="string">", p = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">N01</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">N01</span><span class="special">.</span><span class="identifier">location</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">", standard deviation "</span> <span class="special"><<</span> <span class="identifier">N01</span><span class="special">.</span><span class="identifier">scale</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">", has "</span> <span class="special"><<</span> <span class="string">"fraction > "</span> <span class="special"><<</span> <span class="identifier">z</span>
+ <span class="special"><<</span> <span class="string">", p = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">N01</span><span class="special">,</span> <span class="identifier">z</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Note: uses complement.</span>
+</pre>
+<pre class="programlisting">Normal distribution with mean = 0 has fraction <= -2, p = 0.0227501
+Normal distribution with mean = 0 has fraction > -2, p = 0.97725
+</pre>
+<p>
+ Noting that p = 0.02 instead of our target of 0.001, we can now use
+ <code class="computeroutput"><span class="identifier">find_scale</span></code> to give a
+ new standard deviation.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">l</span> <span class="special">=</span> <span class="identifier">N01</span><span class="special">.</span><span class="identifier">location</span><span class="special">();</span>
+<span class="keyword">double</span> <span class="identifier">s</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">l</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"scale (standard deviation) = "</span> <span class="special"><<</span> <span class="identifier">s</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ that outputs:
+ </p>
+<pre class="programlisting">scale (standard deviation) = 0.647201
+</pre>
+<p>
+ showing that we need to reduce the standard deviation from 1. to 0.65.
+ </p>
+<p>
+ Then we can check that we have achieved our objective by constructing
+ a new distribution with the new standard deviation (but same zero mean):
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">np001pc</span><span class="special">(</span><span class="identifier">N01</span><span class="special">.</span><span class="identifier">location</span><span class="special">(),</span> <span class="identifier">s</span><span class="special">);</span>
+</pre>
+<p>
+ And re-calculating the fraction below (and above) our chosen limit.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">l</span>
+ <span class="special"><<</span> <span class="string">" has "</span> <span class="special"><<</span> <span class="string">"fraction <= "</span> <span class="special"><<</span> <span class="identifier">z</span>
+ <span class="special"><<</span> <span class="string">", p = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">np001pc</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">l</span>
+ <span class="special"><<</span> <span class="string">" has "</span> <span class="special"><<</span> <span class="string">"fraction > "</span> <span class="special"><<</span> <span class="identifier">z</span>
+ <span class="special"><<</span> <span class="string">", p = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">np001pc</span><span class="special">,</span> <span class="identifier">z</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Normal distribution with mean = 0 has fraction <= -2, p = 0.001
+Normal distribution with mean = 0 has fraction > -2, p = 0.999
+</pre>
+<h5>
+<a name="math_toolkit.stat_tut.weg.find_eg.find_scale_eg.h0"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.find_eg.find_scale_eg.controlling_how_errors_from_find"></a></span><a class="link" href="find_scale_eg.html#math_toolkit.stat_tut.weg.find_eg.find_scale_eg.controlling_how_errors_from_find">Controlling
+ how Errors from find_scale are handled</a>
+ </h5>
+<p>
+ We can also control the policy for handling various errors. For example,
+ we can define a new (possibly unwise) policy to ignore domain errors
+ ('bad' arguments).
+ </p>
+<p>
+ Unless we are using the boost::math namespace, we will need:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">domain_error</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">ignore_error</span><span class="special">;</span>
+</pre>
+<p>
+ Using a typedef is convenient, especially if it is re-used, although
+ it is not required, as the various examples below show.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">ignore_error</span><span class="special">></span> <span class="special">></span> <span class="identifier">ignore_domain_policy</span><span class="special">;</span>
+<span class="comment">// find_scale with new policy, using typedef.</span>
+<span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">ignore_domain_policy</span><span class="special">());</span>
+<span class="comment">// Default policy policy<>, needs using boost::math::policies::policy;</span>
+
+<span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">policy</span><span class="special"><>());</span>
+<span class="comment">// Default policy, fully specified.</span>
+<span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><>());</span>
+<span class="comment">// New policy, without typedef.</span>
+<span class="identifier">l</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">policy</span><span class="special"><</span><span class="identifier">domain_error</span><span class="special"><</span><span class="identifier">ignore_error</span><span class="special">></span> <span class="special">>());</span>
+</pre>
+<p>
+ If we want to express a probability, say 0.999, that is a complement,
+ <code class="computeroutput"><span class="number">1</span> <span class="special">-</span>
+ <span class="identifier">p</span></code> we should not even think
+ of writing <code class="computeroutput"><span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="number">1</span> <span class="special">-</span>
+ <span class="identifier">p</span><span class="special">,</span>
+ <span class="identifier">l</span><span class="special">)</span></code>,
+ but <a class="link" href="../../overview/complements.html#why_complements">instead</a>, use the <a class="link" href="../../overview/complements.html" title="Complements are supported too - and when to use them">complements</a>
+ version.
+ </p>
+<pre class="programlisting"><span class="identifier">z</span> <span class="special">=</span> <span class="special">-</span><span class="number">2.</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">q</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">;</span> <span class="comment">// = 1 - p; // complement of 0.001.</span>
+<span class="identifier">sd</span> <span class="special">=</span> <span class="identifier">find_scale</span><span class="special"><</span><span class="identifier">normal</span><span class="special">>(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">q</span><span class="special">,</span> <span class="identifier">l</span><span class="special">));</span>
+
+<span class="identifier">normal</span> <span class="identifier">np95pc</span><span class="special">(</span><span class="identifier">l</span><span class="special">,</span> <span class="identifier">sd</span><span class="special">);</span> <span class="comment">// Same standard_deviation (scale) but with mean(scale) shifted</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="string">" has "</span>
+ <span class="special"><<</span> <span class="string">"fraction <= "</span> <span class="special"><<</span> <span class="identifier">z</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">np95pc</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Normal distribution with mean = "</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="string">" has "</span>
+ <span class="special"><<</span> <span class="string">"fraction > "</span> <span class="special"><<</span> <span class="identifier">z</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">np95pc</span><span class="special">,</span> <span class="identifier">z</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Sadly, it is all too easy to get probabilities the wrong way round, when
+ you may get a warning like this:
+ </p>
+<pre class="programlisting">Message from thrown exception was:
+ Error in function boost::math::find_scale<Dist, Policy>(complement(double, double, double, Policy)):
+ Computed scale (-0.48043523852179076) is <= 0! Was the complement intended?
+</pre>
+<p>
+ The default error handling policy is to throw an exception with this
+ message, but if you chose a policy to ignore the error, the (impossible)
+ negative scale is quietly returned.
+ </p>
+<p>
+ See find_scale_example.cpp
+ for full source code: the program output looks like this:
+ </p>
+<pre class="programlisting">Example: Find scale (standard deviation).
+Normal distribution with mean = 0, standard deviation 1, has fraction <= -2, p = 0.0227501
+Normal distribution with mean = 0, standard deviation 1, has fraction > -2, p = 0.97725
+scale (standard deviation) = 0.647201
+Normal distribution with mean = 0 has fraction <= -2, p = 0.001
+Normal distribution with mean = 0 has fraction > -2, p = 0.999
+Normal distribution with mean = 0.946339 has fraction <= -2 = 0.001
+Normal distribution with mean = 0.946339 has fraction > -2 = 0.999
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="find_location_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../find_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="find_mean_and_sd_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/geometric_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/geometric_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,409 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Geometric Distribution Examples</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="binom_eg/binom_size_eg.html" title="Estimating Sample Sizes for a Binomial Distribution.">
+<link rel="next" href="neg_binom_eg.html" title="Negative Binomial Distribution Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="binom_eg/binom_size_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="neg_binom_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_geometric_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.geometric_eg"></a><a class="link" href="geometric_eg.html" title="Geometric Distribution Examples">Geometric Distribution
+ Examples</a>
+</h4></div></div></div>
+<p>
+ For this example, we will opt to #define two macros to control the error
+ and discrete handling policies. For this simple example, we want to avoid
+ throwing an exception (the default policy) and just return infinity. We
+ want to treat the distribution as if it was continuous, so we choose a
+ discrete_quantile policy of real, rather than the default policy integer_round_outwards.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_OVERFLOW_ERROR_POLICY</span> <span class="identifier">ignore_error</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span> <span class="identifier">real</span>
+</pre>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ It is vital to #include distributions etc <span class="bold"><strong>after</strong></span>
+ the above #defines
+ </p></td></tr>
+</table></div>
+<p>
+ After that we need some includes to provide easy access to the negative
+ binomial distribution, and we need some std library iostream, of course.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">geometric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="comment">// for geometric_distribution</span>
+ <span class="keyword">using</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">geometric_distribution</span><span class="special">;</span> <span class="comment">// </span>
+ <span class="keyword">using</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">geometric</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+ <span class="keyword">using</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">pdf</span><span class="special">;</span> <span class="comment">// Probability mass function.</span>
+ <span class="keyword">using</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cdf</span><span class="special">;</span> <span class="comment">// Cumulative density function.</span>
+ <span class="keyword">using</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quantile</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="comment">// for negative_binomial_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="comment">// for negative_binomial_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">noshowpoint</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fixed</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">right</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">;</span>
+</pre>
+<p>
+ It is always sensible to use try and catch blocks because defaults policies
+ are to throw an exception if anything goes wrong.
+ </p>
+<p>
+ Simple try'n'catch blocks (see below) will ensure that you get a helpful
+ error message instead of an abrupt (and silent) program abort.
+ </p>
+<h5>
+<a name="math_toolkit.stat_tut.weg.geometric_eg.h0"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.geometric_eg.throwing_a_dice"></a></span><a class="link" href="geometric_eg.html#math_toolkit.stat_tut.weg.geometric_eg.throwing_a_dice">Throwing
+ a dice</a>
+ </h5>
+<p>
+ The Geometric distribution describes the probability (<span class="emphasis"><em>p</em></span>)
+ of a number of failures to get the first success in <span class="emphasis"><em>k</em></span>
+ Bernoulli trials. (A <a href="http://en.wikipedia.org/wiki/Bernoulli_distribution" target="_top">Bernoulli
+ trial</a> is one with only two possible outcomes, success of failure,
+ and <span class="emphasis"><em>p</em></span> is the probability of success).
+ </p>
+<p>
+ Suppose an 'fair' 6-face dice is thrown repeatedly:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">success_fraction</span> <span class="special">=</span> <span class="number">1.</span><span class="special">/</span><span class="number">6</span><span class="special">;</span> <span class="comment">// success_fraction (p) = 0.1666</span>
+<span class="comment">// (so failure_fraction is 1 - success_fraction = 5./6 = 1- 0.1666 = 0.8333)</span>
+</pre>
+<p>
+ If the dice is thrown repeatedly until the <span class="bold"><strong>first</strong></span>
+ time a <span class="emphasis"><em>three</em></span> appears. The probablility distribution
+ of the number of times it is thrown <span class="bold"><strong>not</strong></span>
+ getting a <span class="emphasis"><em>three</em></span> (<span class="emphasis"><em>not-a-threes</em></span>
+ number of failures to get a <span class="emphasis"><em>three</em></span>) is a geometric
+ distribution with the success_fraction = 1/6 = 0.1666 ̇.
+ </p>
+<p>
+ We therefore start by constructing a geometric distribution with the one
+ parameter success_fraction, the probability of success.
+ </p>
+<pre class="programlisting"><span class="identifier">geometric</span> <span class="identifier">g6</span><span class="special">(</span><span class="identifier">success_fraction</span><span class="special">);</span> <span class="comment">// type double by default.</span>
+</pre>
+<p>
+ To confirm, we can echo the success_fraction parameter of the distribution.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"success fraction of a six-sided dice is "</span> <span class="special"><<</span> <span class="identifier">g6</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ So the probability of getting a three at the first throw (zero failures)
+ is
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">g6</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.1667</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">g6</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.1667</span>
+</pre>
+<p>
+ Note that the cdf and pdf are identical because the is only one throw.
+ If we want the probability of getting the first <span class="emphasis"><em>three</em></span>
+ on the 2nd throw:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">g6</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.1389</span>
+</pre>
+<p>
+ If we want the probability of getting the first <span class="emphasis"><em>three</em></span>
+ on the 1st or 2nd throw (allowing one failure):
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"pdf(g6, 0) + pdf(g6, 1) = "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">g6</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">g6</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Or more conveniently, and more generally, we can use the Cumulative Distribution
+ Function CDF.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"cdf(g6, 1) = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">g6</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.3056</span>
+</pre>
+<p>
+ If we allow many more (12) throws, the probability of getting our <span class="emphasis"><em>three</em></span>
+ gets very high:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"cdf(g6, 12) = "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">g6</span><span class="special">,</span> <span class="number">12</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.9065 or 90% probability.</span>
+</pre>
+<p>
+ If we want to be much more confident, say 99%, we can estimate the number
+ of throws to be this sure using the inverse or quantile.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"quantile(g6, 0.99) = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">g6</span><span class="special">,</span> <span class="number">0.99</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 24.26</span>
+</pre>
+<p>
+ Note that the value returned is not an integer: if you want an integer
+ result you should use either floor, round or ceil functions, or use the
+ policies mechanism. See <a class="link" href="../../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
+ Quantiles of Discrete Distributions</a>
+ </p>
+<p>
+ The geometric distribution is related to the negative binomial    <code class="computeroutput"><span class="identifier">negative_binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">RealType</span>
+ <span class="identifier">p</span><span class="special">);</span></code>
+ with parameter <span class="emphasis"><em>r</em></span> = 1. So we could get the same result
+ using the negative binomial, but using the geometric the results will be
+ faster, and may be more accurate.
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial</span> <span class="identifier">nb</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">success_fraction</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.1389</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.3056</span>
+</pre>
+<p>
+ We could also the complement to express the required probability as 1 -
+ 0.99 = 0.01 (and get the same result):
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"quantile(complement(g6, 1 - p)) "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">g6</span><span class="special">,</span> <span class="number">0.01</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 24.26</span>
+</pre>
+<p>
+ Note too that Boost.Math geometric distribution is implemented as a continuous
+ function. Unlike other implementations (for example R) it <span class="bold"><strong>uses</strong></span>
+ the number of failures as a <span class="bold"><strong>real</strong></span> parameter,
+ not as an integer. If you want this integer behaviour, you may need to
+ enforce this by rounding the parameter you pass, probably rounding down,
+ to the nearest integer. For example, R returns the success fraction probability
+ for all values of failures from 0 to 0.999999 thus:
+ </p>
+<pre class="programlisting">   R> formatC(pgeom(0.0001,0.5, FALSE), digits=17) " 0.5"
+</pre>
+<p>
+ So in Boost.Math the equivalent is
+ </p>
+<pre class="programlisting"> <span class="identifier">geometric</span> <span class="identifier">g05</span><span class="special">(</span><span class="number">0.5</span><span class="special">);</span> <span class="comment">// Probability of success = 0.5 or 50%</span>
+ <span class="comment">// Output all potentially significant digits for the type, here double.</span>
+
+<span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_NO_CXX11_NUMERIC_LIMITS</span>
+ <span class="keyword">int</span> <span class="identifier">max_digits10</span> <span class="special">=</span> <span class="number">2</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">digits</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><></span> <span class="special">>()</span> <span class="special">*</span> <span class="number">30103UL</span><span class="special">)</span> <span class="special">/</span> <span class="number">100000UL</
span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"BOOST_NO_CXX11_NUMERIC_LIMITS is defined"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="preprocessor">#else</span>
+ <span class="keyword">int</span> <span class="identifier">max_digits10</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">;</span>
+<span class="preprocessor">#endif</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Show all potentially significant decimal digits std::numeric_limits<double>::max_digits10 = "</span>
+ <span class="special"><<</span> <span class="identifier">max_digits10</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">max_digits10</span><span class="special">);</span> <span class="comment">// </span>
+
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">g05</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// returns 0.5000346561579232, not exact 0.5.</span>
+</pre>
+<p>
+ To get the R discrete behaviour, you simply need to round with, for example,
+ the <code class="computeroutput"><span class="identifier">floor</span></code> function.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">g05</span><span class="special">,</span> <span class="identifier">floor</span><span class="special">(</span><span class="number">0.0001</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// returns exactly 0.5</span>
+</pre>
+<pre class="programlisting"><code class="computeroutput"><span class="special">></span> <span class="identifier">formatC</span><span class="special">(</span><span class="identifier">pgeom</span><span class="special">(</span><span class="number">0.9999999</span><span class="special">,</span><span class="number">0.5</span><span class="special">,</span> <span class="identifier">FALSE</span><span class="special">),</span> <span class="identifier">digits</span><span class="special">=</span><span class="number">17</span><span class="special">)</span> <span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="string">" 0.25"</span></code>
+<code class="computeroutput"><span class="special">></span> <span class="identifier">formatC</span><span class="special">(</span><span class="identifier">pgeom</span><span class="special">(</span><span class="number">1.999999</span><span class="special">,</span><span class="number">0.5</span><span class="special">,</span> <span class="identifier">FALSE</span><span class="special">),</span> <span class="identifier">digits</span><span class="special">=</span><span class="number">17</span><span class="special">)[</span><span class="number">1</span><span class="special">]</span> <span class="string">" 0.25"</span> <span class="identifier">k</span> <span class="special">=</span> <span class="number">1</span></code>
+<code class="computeroutput"><span class="special">></span> <span class="identifier">formatC</span><span class="special">(</span><span class="identifier">pgeom</span><span class="special">(</span><span class="number">1.9999999</span><span class="special">,</span><span class="number">0.5</span><span class="special">,</span> <span class="identifier">FALSE</span><span class="special">),</span> <span class="identifier">digits</span><span class="special">=</span><span class="number">17</span><span class="special">)[</span><span class="number">1</span><span class="special">]</span> <span class="string">"0.12500000000000003"</span> <span class="identifier">k</span> <span class="special">=</span> <span class="number">2</span></code>
+</pre>
+<p>
+ shows that R makes an arbitrary round-up decision at about 1e7 from the
+ next integer above. This may be convenient in practice, and could be replicated
+ in C++ if desired.
+ </p>
+<h5>
+<a name="math_toolkit.stat_tut.weg.geometric_eg.h1"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.geometric_eg.surveying_customers_to_find_one_"></a></span><a class="link" href="geometric_eg.html#math_toolkit.stat_tut.weg.geometric_eg.surveying_customers_to_find_one_">Surveying
+ customers to find one with a faulty product</a>
+ </h5>
+<p>
+ A company knows from warranty claims that 2% of their products will be
+ faulty, so the 'success_fraction' of finding a fault is 0.02. It wants
+ to interview a purchaser of faulty products to assess their 'user experience'.
+ </p>
+<p>
+ To estimate how many customers they will probably need to contact in order
+ to find one who has suffered from the fault, we first construct a geometric
+ distribution with probability 0.02, and then chose a confidence, say 80%,
+ 95%, or 99% to finding a customer with a fault. Finally, we probably want
+ to round up the result to the integer above using the <code class="computeroutput"><span class="identifier">ceil</span></code>
+ function. (We could also use a policy, but that is hardly worthwhile for
+ this simple application.)
+ </p>
+<p>
+ (This also assumes that each customer only buys one product: if customers
+ bought more than one item, the probability of finding a customer with a
+ fault obviously improves.)
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+<span class="identifier">geometric</span> <span class="identifier">g</span><span class="special">(</span><span class="number">0.02</span><span class="special">);</span> <span class="comment">// On average, 2 in 100 products are faulty.</span>
+<span class="keyword">double</span> <span class="identifier">c</span> <span class="special">=</span> <span class="number">0.95</span><span class="special">;</span> <span class="comment">// 95% confidence.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" quantile(g, "</span> <span class="special"><<</span> <span class="identifier">c</span> <span class="special"><<</span> <span class="string">") = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">g</span><span class="special">,</span> <span class="identifier">c</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"To be "</span> <span class="special"><<</span> <span class="identifier">c</span> <span class="special">*</span> <span class="number">100</span>
+ <span class="special"><<</span> <span class="string">"% confident of finding we customer with a fault, need to survey "</span>
+ <span class="special"><<</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">g</span><span class="special">,</span> <span class="identifier">c</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" customers."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 148</span>
+<span class="identifier">c</span> <span class="special">=</span> <span class="number">0.99</span><span class="special">;</span> <span class="comment">// Very confident.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"To be "</span> <span class="special"><<</span> <span class="identifier">c</span> <span class="special">*</span> <span class="number">100</span>
+ <span class="special"><<</span> <span class="string">"% confident of finding we customer with a fault, need to survey "</span>
+ <span class="special"><<</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">g</span><span class="special">,</span> <span class="identifier">c</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" customers."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 227</span>
+<span class="identifier">c</span> <span class="special">=</span> <span class="number">0.80</span><span class="special">;</span> <span class="comment">// Only reasonably confident.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"To be "</span> <span class="special"><<</span> <span class="identifier">c</span> <span class="special">*</span> <span class="number">100</span>
+ <span class="special"><<</span> <span class="string">"% confident of finding we customer with a fault, need to survey "</span>
+ <span class="special"><<</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">g</span><span class="special">,</span> <span class="identifier">c</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" customers."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 79</span>
+</pre>
+<h5>
+<a name="math_toolkit.stat_tut.weg.geometric_eg.h2"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.geometric_eg.basket_ball_shooters"></a></span><a class="link" href="geometric_eg.html#math_toolkit.stat_tut.weg.geometric_eg.basket_ball_shooters">Basket
+ Ball Shooters</a>
+ </h5>
+<p>
+ According to Wikipedia, average pro basket ball players get <a href="http://en.wikipedia.org/wiki/Free_throw" target="_top">free
+ throws</a> in the baskets 70 to 80 % of the time, but some get as high
+ as 95%, and others as low as 50%. Suppose we want to compare the probabilities
+ of failing to get a score only on the first or on the fifth shot? To start
+ we will consider the average shooter, say 75%. So we construct a geometric
+ distribution with success_fraction parameter 75/100 = 0.75.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">geometric</span> <span class="identifier">gav</span><span class="special">(</span><span class="number">0.75</span><span class="special">);</span> <span class="comment">// Shooter averages 7.5 out of 10 in the basket.</span>
+</pre>
+<p>
+ What is probability of getting 1st try in the basket, that is with no failures?
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of score on 1st try = "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">gav</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.75</span>
+</pre>
+<p>
+ This is, of course, the success_fraction probability 75%. What is the probability
+ that the shooter only scores on the fifth shot? So there are 5-1 = 4 failures
+ before the first success.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of score on 5th try = "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">gav</span><span class="special">,</span> <span class="number">4</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.0029</span>
+</pre>
+<p>
+ Now compare this with the poor and the best players success fraction. We
+ need to constructing new distributions with the different success fractions,
+ and then get the corresponding probability density functions values:
+ </p>
+<pre class="programlisting"><span class="identifier">geometric</span> <span class="identifier">gbest</span><span class="special">(</span><span class="number">0.95</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of score on 5th try = "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">gbest</span><span class="special">,</span> <span class="number">4</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 5.9e-6</span>
+<span class="identifier">geometric</span> <span class="identifier">gmediocre</span><span class="special">(</span><span class="number">0.50</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of score on 5th try = "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">gmediocre</span><span class="special">,</span> <span class="number">4</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.031</span>
+</pre>
+<p>
+ So we can see the very much smaller chance (0.000006) of 4 failures by
+ the best shooters, compared to the 0.03 of the mediocre.
+ </p>
+<h5>
+<a name="math_toolkit.stat_tut.weg.geometric_eg.h3"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.geometric_eg.estimating_failures"></a></span><a class="link" href="geometric_eg.html#math_toolkit.stat_tut.weg.geometric_eg.estimating_failures">Estimating
+ failures</a>
+ </h5>
+<p>
+ Of course one man's failure is an other man's success. So a fault can be
+ defined as a 'success'.
+ </p>
+<p>
+ If a fault occurs once after 100 flights, then one might naively say that
+ the risk of fault is obviously 1 in 100 = 1/100, a probability of 0.01.
+ </p>
+<p>
+ This is the best estimate we can make, but while it is the truth, it is
+ not the whole truth, for it hides the big uncertainty when estimating from
+ a single event. "One swallow doesn't make a summer." To show
+ the magnitude of the uncertainty, the geometric (or the negative binomial)
+ distribution can be used.
+ </p>
+<p>
+ If we chose the popular 95% confidence in the limits, corresponding to
+ an alpha of 0.05, because we are calculating a two-sided interval, we must
+ divide alpha by two.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span> <span class="special">=</span> <span class="number">0.05</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">k</span> <span class="special">=</span> <span class="number">100</span><span class="special">;</span> <span class="comment">// So frequency of occurence is 1/100.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability is failure is "</span> <span class="special"><<</span> <span class="number">1</span><span class="special">/</span><span class="identifier">k</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">geometric</span><span class="special">::</span><span class="identifier">find_lower_bound_on_p</span><span class="special">(</span><span class="identifier">k</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"geometric::find_lower_bound_on_p("</span> <span class="special"><<</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">k</span><span class="special">)</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span> <span class="special"><<</span> <span class="string">") = "</span>
+ <span class="special"><<</span> <span class="identifier">t</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.00025</span>
+<span class="identifier">t</span> <span class="special">=</span> <span class="identifier">geometric</span><span class="special">::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span><span class="identifier">k</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"geometric::find_upper_bound_on_p("</span> <span class="special"><<</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">k</span><span class="special">)</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span> <span class="special"><<</span> <span class="string">") = "</span>
+ <span class="special"><<</span> <span class="identifier">t</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.037</span>
+</pre>
+<p>
+ So while we estimate the probability is 0.01, it might lie between 0.0003
+ and 0.04. Even if we relax our confidence to alpha = 90%, the bounds only
+ contract to 0.0005 and 0.03. And if we require a high confidence, they
+ widen to 0.00005 to 0.05.
+ </p>
+<pre class="programlisting"><span class="identifier">alpha</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">;</span> <span class="comment">// 90% confidence.</span>
+<span class="identifier">t</span> <span class="special">=</span> <span class="identifier">geometric</span><span class="special">::</span><span class="identifier">find_lower_bound_on_p</span><span class="special">(</span><span class="identifier">k</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"geometric::find_lower_bound_on_p("</span> <span class="special"><<</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">k</span><span class="special">)</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span> <span class="special"><<</span> <span class="string">") = "</span>
+ <span class="special"><<</span> <span class="identifier">t</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.0005</span>
+<span class="identifier">t</span> <span class="special">=</span> <span class="identifier">geometric</span><span class="special">::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span><span class="identifier">k</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"geometric::find_upper_bound_on_p("</span> <span class="special"><<</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">k</span><span class="special">)</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span> <span class="special"><<</span> <span class="string">") = "</span>
+ <span class="special"><<</span> <span class="identifier">t</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.03</span>
+
+<span class="identifier">alpha</span> <span class="special">=</span> <span class="number">0.01</span><span class="special">;</span> <span class="comment">// 99% confidence.</span>
+<span class="identifier">t</span> <span class="special">=</span> <span class="identifier">geometric</span><span class="special">::</span><span class="identifier">find_lower_bound_on_p</span><span class="special">(</span><span class="identifier">k</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"geometric::find_lower_bound_on_p("</span> <span class="special"><<</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">k</span><span class="special">)</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span> <span class="special"><<</span> <span class="string">") = "</span>
+ <span class="special"><<</span> <span class="identifier">t</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 5e-005</span>
+<span class="identifier">t</span> <span class="special">=</span> <span class="identifier">geometric</span><span class="special">::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span><span class="identifier">k</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"geometric::find_upper_bound_on_p("</span> <span class="special"><<</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">k</span><span class="special">)</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">alpha</span><span class="special">/</span><span class="number">2</span> <span class="special"><<</span> <span class="string">") = "</span>
+ <span class="special"><<</span> <span class="identifier">t</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.052</span>
+</pre>
+<p>
+ In real life, there will usually be more than one event (fault or success),
+ when the negative binomial, which has the neccessary extra parameter, will
+ be needed.
+ </p>
+<p>
+ As noted above, using a catch block is always a good idea, even if you
+ hope not to use it!
+ </p>
+<pre class="programlisting"><span class="special">}</span>
+<span class="keyword">catch</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">&</span> <span class="identifier">e</span><span class="special">)</span>
+<span class="special">{</span> <span class="comment">// Since we have set an overflow policy of ignore_error,</span>
+ <span class="comment">// an overflow exception should never be thrown.</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nMessage from thrown exception was:\n "</span> <span class="special"><<</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ For example, without a ignore domain error policy, if we asked for
+ </p>
+<pre class="programlisting"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">g</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span></pre>
+<p>
+ for example, we would get an unhelpful abort, but with a catch:
+ </p>
+<pre class="programlisting">Message from thrown exception was:
+ Error in function boost::math::pdf(const exponential_distribution<double>&, double):
+ Number of failures argument is -1, but must be >= 0 !
+</pre>
+<p>
+ See full source C++ of this example at geometric_examples.cpp
+ </p>
+<p>
+ <a class="link" href="neg_binom_eg/neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">See
+ negative_binomial confidence interval example.</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="binom_eg/binom_size_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="neg_binom_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,350 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Inverse Chi-Squared Distribution Bayes Example</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="normal_example/normal_misc.html" title="Some Miscellaneous Examples of the Normal (Gaussian) Distribution">
+<link rel="next" href="nccs_eg.html" title="Non Central Chi Squared Example">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="normal_example/normal_misc.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nccs_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_inverse_chi_squared_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.inverse_chi_squared_eg"></a><a class="link" href="inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example">Inverse
+ Chi-Squared Distribution Bayes Example</a>
+</h4></div></div></div>
+<p>
+ The scaled-inversed-chi-squared distribution is the conjugate prior distribution
+ for the variance (σ<sup>2</sup>) parameter of a normal distribution with known expectation
+ (μ). As such it has widespread application in Bayesian statistics:
+ </p>
+<p>
+ In <a href="http://en.wikipedia.org/wiki/Bayesian_inference" target="_top">Bayesian
+ inference</a>, the strength of belief into certain parameter values
+ is itself described through a distribution. Parameters hence become themselves
+ modelled and interpreted as random variables.
+ </p>
+<p>
+ In this worked example, we perform such a Bayesian analysis by using the
+ scaled-inverse-chi-squared distribution as prior and posterior distribution
+ for the variance parameter of a normal distribution.
+ </p>
+<p>
+ For more general information on Bayesian type of analyses, see:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Andrew Gelman, John B. Carlin, Hal E. Stern, Donald B. Rubin, Bayesian
+ Data Analysis, 2003, ISBN 978-1439840955.
+ </li>
+<li class="listitem">
+ Jim Albert, Bayesian Compution with R, Springer, 2009, ISBN 978-0387922973.
+ </li>
+</ul></div>
+<p>
+ (As the scaled-inversed-chi-squared is another parameterization of the
+ inverse-gamma distribution, this example could also have used the inverse-gamma
+ distribution).
+ </p>
+<p>
+ Consider precision machines which produce balls for a high-quality ball
+ bearing. Ideally each ball should have a diameter of precisely 3000 μm (3
+ mm). Assume that machines generally produce balls of that size on average
+ (mean), but individual balls can vary slightly in either direction following
+ (approximately) a normal distribution. Depending on various production
+ conditions (e.g. raw material used for balls, workplace temperature and
+ humidity, maintenance frequency and quality) some machines produce balls
+ tighter distributed around the target of 3000 μm, while others produce balls
+ with a wider distribution. Therefore the variance parameter of the normal
+ distribution of the ball sizes varies from machine to machine. An extensive
+ survey by the precision machinery manufacturer, however, has shown that
+ most machines operate with a variance between 15 and 50, and near 25 μm<sup>2</sup> on
+ average.
+ </p>
+<p>
+ Using this information, we want to model the variance of the machines.
+ The variance is strictly positive, and therefore we look for a statistical
+ distribution with support in the positive domain of the real numbers. Given
+ the expectation of the normal distribution of the balls is known (3000
+ μm), for reasons of conjugacy, it is customary practice in Bayesian statistics
+ to model the variance to be scaled-inverse-chi-squared distributed.
+ </p>
+<p>
+ In a first step, we will try to use the survey information to model the
+ general knowledge about the variance parameter of machines measured by
+ the manufacturer. This will provide us with a generic prior distribution
+ that is applicable if nothing more specific is known about a particular
+ machine.
+ </p>
+<p>
+ In a second step, we will then combine the prior-distribution information
+ in a Bayesian analysis with data on a specific single machine to derive
+ a posterior distribution for that machine.
+ </p>
+<h6>
+<a name="math_toolkit.stat_tut.weg.inverse_chi_squared_eg.h0"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.inverse_chi_squared_eg.step_one_using_the_survey_inform"></a></span><a class="link" href="inverse_chi_squared_eg.html#math_toolkit.stat_tut.weg.inverse_chi_squared_eg.step_one_using_the_survey_inform">Step
+ one: Using the survey information.</a>
+ </h6>
+<p>
+ Using the survey results, we try to find the parameter set of a scaled-inverse-chi-squared
+ distribution so that the properties of this distribution match the results.
+ Using the mathematical properties of the scaled-inverse-chi-squared distribution
+ as guideline, we see that that both the mean and mode of the scaled-inverse-chi-squared
+ distribution are approximately given by the scale parameter (s) of the
+ distribution. As the survey machines operated at a variance of 25 μm<sup>2</sup> on
+ average, we hence set the scale parameter (s<sub>prior</sub>) of our prior distribution
+ equal to this value. Using some trial-and-error and calls to the global
+ quantile function, we also find that a value of 20 for the degrees-of-freedom
+ (ν<sub>prior</sub>) parameter is adequate so that most of the prior distribution mass
+ is located between 15 and 50 (see figure below).
+ </p>
+<p>
+ We first construct our prior distribution using these values, and then
+ list out a few quantiles:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">priorDF</span> <span class="special">=</span> <span class="number">20.0</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">priorScale</span> <span class="special">=</span> <span class="number">25.0</span><span class="special">;</span>
+
+<span class="identifier">inverse_chi_squared</span> <span class="identifier">prior</span><span class="special">(</span><span class="identifier">priorDF</span><span class="special">,</span> <span class="identifier">priorScale</span><span class="special">);</span>
+<span class="comment">// Using an inverse_gamma distribution instead, we could equivalently write</span>
+<span class="comment">// inverse_gamma prior(priorDF / 2.0, priorScale * priorDF / 2.0);</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Prior distribution:"</span> <span class="special"><<</span> <span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" 2.5% quantile: "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">prior</span><span class="special">,</span> <span class="number">0.025</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" 50% quantile: "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">prior</span><span class="special">,</span> <span class="number">0.5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" 97.5% quantile: "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">prior</span><span class="special">,</span> <span class="number">0.975</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ This produces this output:
+ </p>
+<pre class="programlisting"><span class="identifier">Prior</span> <span class="identifier">distribution</span><span class="special">:</span>
+
+<span class="number">2.5</span><span class="special">%</span> <span class="identifier">quantile</span><span class="special">:</span> <span class="number">14.6</span>
+<span class="number">50</span><span class="special">%</span> <span class="identifier">quantile</span><span class="special">:</span> <span class="number">25.9</span>
+<span class="number">97.5</span><span class="special">%</span> <span class="identifier">quantile</span><span class="special">:</span> <span class="number">52.1</span>
+</pre>
+<p>
+ Based on this distribution, we can now calculate the probability of having
+ a machine working with an unusual work precision (variance) at <= 15
+ or > 50. For this task, we use calls to the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span></code> functions <code class="computeroutput"><span class="identifier">cdf</span></code>
+ and <code class="computeroutput"><span class="identifier">complement</span></code>, respectively,
+ and find a probability of about 0.031 (3.1%) for each case.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" probability variance <= 15: "</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">prior</span><span class="special">,</span> <span class="number">15.0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" probability variance <= 25: "</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">prior</span><span class="special">,</span> <span class="number">25.0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" probability variance > 50: "</span>
+ <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">prior</span><span class="special">,</span> <span class="number">50.0</span><span class="special">))</span>
+<span class="special"><<</span> <span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ This produces this output:
+ </p>
+<pre class="programlisting"><span class="identifier">probability</span> <span class="identifier">variance</span> <span class="special"><=</span> <span class="number">15</span><span class="special">:</span> <span class="number">0.031</span>
+<span class="identifier">probability</span> <span class="identifier">variance</span> <span class="special"><=</span> <span class="number">25</span><span class="special">:</span> <span class="number">0.458</span>
+<span class="identifier">probability</span> <span class="identifier">variance</span> <span class="special">></span> <span class="number">50</span><span class="special">:</span> <span class="number">0.0318</span>
+</pre>
+<p>
+ Therefore, only 3.1% of all precision machines produce balls with a variance
+ of 15 or less (particularly precise machines), but also only 3.2% of all
+ machines produce balls with a variance of as high as 50 or more (particularly
+ imprecise machines). Moreover, slightly more than one-half (1 - 0.458 =
+ 54.2%) of the machines work at a variance greater than 25.
+ </p>
+<p>
+ Notice here the distinction between a Bayesian
+ analysis and a frequentist
+ analysis: because we model the variance as random variable itself, we can
+ calculate and straightforwardly interpret probabilities for given parameter
+ values directly, while such an approach is not possible (and interpretationally
+ a strict <span class="emphasis"><em>must-not</em></span>) in the frequentist world.
+ </p>
+<h6>
+<a name="math_toolkit.stat_tut.weg.inverse_chi_squared_eg.h1"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.inverse_chi_squared_eg.step_2_investigate_a_single_mach"></a></span><a class="link" href="inverse_chi_squared_eg.html#math_toolkit.stat_tut.weg.inverse_chi_squared_eg.step_2_investigate_a_single_mach">Step
+ 2: Investigate a single machine</a>
+ </h6>
+<p>
+ In the second step, we investigate a single machine, which is suspected
+ to suffer from a major fault as the produced balls show fairly high size
+ variability. Based on the prior distribution of generic machinery performance
+ (derived above) and data on balls produced by the suspect machine, we calculate
+ the posterior distribution for that machine and use its properties for
+ guidance regarding continued machine operation or suspension.
+ </p>
+<p>
+ It can be shown that if the prior distribution was chosen to be scaled-inverse-chi-square
+ distributed, then the posterior distribution is also scaled-inverse-chi-squared-distributed
+ (prior and posterior distributions are hence conjugate). For more details
+ regarding conjugacy and formula to derive the parameters set for the posterior
+ distribution see <a href="http://en.wikipedia.org/wiki/Conjugate_prior" target="_top">Conjugate
+ prior</a>.
+ </p>
+<p>
+ Given the prior distribution parameters and sample data (of size n), the
+ posterior distribution parameters are given by the two expressions:
+ </p>
+<p>
+    ν<sub>posterior</sub> = ν<sub>prior</sub> + n
+ </p>
+<p>
+ which gives the posteriorDF below, and
+ </p>
+<p>
+    s<sub>posterior</sub> = (ν<sub>prior</sub>s<sub>prior</sub> + Σ<sup>n</sup><sub>i=1</sub>(x<sub>i</sub> - μ)<sup>2</sup>) / (ν<sub>prior</sub> + n)
+ </p>
+<p>
+ which after some rearrangement gives the formula for the posteriorScale
+ below.
+ </p>
+<p>
+ Machine-specific data consist of 100 balls which were accurately measured
+ and show the expected mean of 3000 μm and a sample variance of 55 (calculated
+ for a sample mean defined to be 3000 exactly). From these data, the prior
+ parameterization, and noting that the term Σ<sup>n</sup><sub>i=1</sub>(x<sub>i</sub> - μ)<sup>2</sup> equals the sample
+ variance multiplied by n - 1, it follows that the posterior distribution
+ of the variance parameter is scaled-inverse-chi-squared distribution with
+ degrees-of-freedom (ν<sub>posterior</sub>) = 120 and scale (s<sub>posterior</sub>) = 49.54.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">ballsSampleSize</span> <span class="special">=</span> <span class="number">100</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"balls sample size: "</span> <span class="special"><<</span> <span class="identifier">ballsSampleSize</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">ballsSampleVariance</span> <span class="special">=</span> <span class="number">55.0</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"balls sample variance: "</span> <span class="special"><<</span> <span class="identifier">ballsSampleVariance</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="keyword">double</span> <span class="identifier">posteriorDF</span> <span class="special">=</span> <span class="identifier">priorDF</span> <span class="special">+</span> <span class="identifier">ballsSampleSize</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"prior degrees-of-freedom: "</span> <span class="special"><<</span> <span class="identifier">priorDF</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"posterior degrees-of-freedom: "</span> <span class="special"><<</span> <span class="identifier">posteriorDF</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="keyword">double</span> <span class="identifier">posteriorScale</span> <span class="special">=</span>
+ <span class="special">(</span><span class="identifier">priorDF</span> <span class="special">*</span> <span class="identifier">priorScale</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">ballsSampleVariance</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">ballsSampleSize</span> <span class="special">-</span> <span class="number">1</span><span class="special">)))</span> <span class="special">/</span> <span class="identifier">posteriorDF</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"prior scale: "</span> <span class="special"><<</span> <span class="identifier">priorScale</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"posterior scale: "</span> <span class="special"><<</span> <span class="identifier">posteriorScale</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ An interesting feature here is that one needs only to know a summary statistics
+ of the sample to parameterize the posterior distribution: the 100 individual
+ ball measurements are irrelevant, just knowledge of the sample variance
+ and number of measurements is sufficient.
+ </p>
+<p>
+ That produces this output:
+ </p>
+<pre class="programlisting"><span class="identifier">balls</span> <span class="identifier">sample</span> <span class="identifier">size</span><span class="special">:</span> <span class="number">100</span>
+<span class="identifier">balls</span> <span class="identifier">sample</span> <span class="identifier">variance</span><span class="special">:</span> <span class="number">55</span>
+<span class="identifier">prior</span> <span class="identifier">degrees</span><span class="special">-</span><span class="identifier">of</span><span class="special">-</span><span class="identifier">freedom</span><span class="special">:</span> <span class="number">20</span>
+<span class="identifier">posterior</span> <span class="identifier">degrees</span><span class="special">-</span><span class="identifier">of</span><span class="special">-</span><span class="identifier">freedom</span><span class="special">:</span> <span class="number">120</span>
+<span class="identifier">prior</span> <span class="identifier">scale</span><span class="special">:</span> <span class="number">25</span>
+<span class="identifier">posterior</span> <span class="identifier">scale</span><span class="special">:</span> <span class="number">49.5</span>
+
+</pre>
+<p>
+ To compare the generic machinery performance with our suspect machine,
+ we calculate again the same quantiles and probabilities as above, and find
+ a distribution clearly shifted to greater values (see figure).
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../graphs/prior_posterior_plot.png" align="middle"></span>
+ </p>
+<pre class="programlisting"><span class="identifier">inverse_chi_squared</span> <span class="identifier">posterior</span><span class="special">(</span><span class="identifier">posteriorDF</span><span class="special">,</span> <span class="identifier">posteriorScale</span><span class="special">);</span>
+
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Posterior distribution:"</span> <span class="special"><<</span> <span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" 2.5% quantile: "</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">posterior</span><span class="special">,</span> <span class="number">0.025</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" 50% quantile: "</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">posterior</span><span class="special">,</span> <span class="number">0.5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" 97.5% quantile: "</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">posterior</span><span class="special">,</span> <span class="number">0.975</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" probability variance <= 15: "</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">posterior</span><span class="special">,</span> <span class="number">15.0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" probability variance <= 25: "</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">posterior</span><span class="special">,</span> <span class="number">25.0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" probability variance > 50: "</span>
+ <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">posterior</span><span class="special">,</span> <span class="number">50.0</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ This produces this output:
+ </p>
+<pre class="programlisting"><span class="identifier">Posterior</span> <span class="identifier">distribution</span><span class="special">:</span>
+
+ <span class="number">2.5</span><span class="special">%</span> <span class="identifier">quantile</span><span class="special">:</span> <span class="number">39.1</span>
+ <span class="number">50</span><span class="special">%</span> <span class="identifier">quantile</span><span class="special">:</span> <span class="number">49.8</span>
+ <span class="number">97.5</span><span class="special">%</span> <span class="identifier">quantile</span><span class="special">:</span> <span class="number">64.9</span>
+
+ <span class="identifier">probability</span> <span class="identifier">variance</span> <span class="special"><=</span> <span class="number">15</span><span class="special">:</span> <span class="number">2.97e-031</span>
+ <span class="identifier">probability</span> <span class="identifier">variance</span> <span class="special"><=</span> <span class="number">25</span><span class="special">:</span> <span class="number">8.85e-010</span>
+ <span class="identifier">probability</span> <span class="identifier">variance</span> <span class="special">></span> <span class="number">50</span><span class="special">:</span> <span class="number">0.489</span>
+</pre>
+<p>
+ Indeed, the probability that the machine works at a low variance (<=
+ 15) is almost zero, and even the probability of working at average or better
+ performance is negligibly small (less than one-millionth of a permille).
+ On the other hand, with an almost near-half probability (49%), the machine
+ operates in the extreme high variance range of > 50 characteristic for
+ poorly performing machines.
+ </p>
+<p>
+ Based on this information the operation of the machine is taken out of
+ use and serviced.
+ </p>
+<p>
+ In summary, the Bayesian analysis allowed us to make exact probabilistic
+ statements about a parameter of interest, and hence provided us results
+ with straightforward interpretation.
+ </p>
+<p>
+ A full sample output is:
+ </p>
+<pre class="programlisting"> Inverse_chi_squared_distribution Bayes example:
+
+ Prior distribution:
+
+ 2.5% quantile: 14.6
+ 50% quantile: 25.9
+ 97.5% quantile: 52.1
+
+ probability variance <= 15: 0.031
+ probability variance <= 25: 0.458
+ probability variance > 50: 0.0318
+
+ balls sample size: 100
+ balls sample variance: 55
+ prior degrees-of-freedom: 20
+ posterior degrees-of-freedom: 120
+ prior scale: 25
+ posterior scale: 49.5
+ Posterior distribution:
+
+ 2.5% quantile: 39.1
+ 50% quantile: 49.8
+ 97.5% quantile: 64.9
+
+ probability variance <= 15: 2.97e-031
+ probability variance <= 25: 8.85e-010
+ probability variance > 50: 0.489
+
+</pre>
+<p>
+ (See also the reference documentation for the <a class="link" href="../../dist_ref/dists/inverse_chi_squared_dist.html" title="Inverse Chi Squared Distribution">Inverse
+ chi squared Distribution</a>.)
+ </p>
+<p>
+ See the full source C++ of this example at ../../example/inverse_chi_squared_bayes_eg.cpp
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="normal_example/normal_misc.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nccs_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nag_library.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nag_library.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,106 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Comparison with C, R, FORTRAN-style Free Functions</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="find_eg/find_mean_and_sd_eg.html" title="Find mean and standard deviation example">
+<link rel="next" href="c_sharp.html" title="Using the Distributions from Within C#">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="find_eg/find_mean_and_sd_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="c_sharp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_nag_library">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.nag_library"></a><a class="link" href="nag_library.html" title="Comparison with C, R, FORTRAN-style Free Functions">Comparison with
+ C, R, FORTRAN-style Free Functions</a>
+</h4></div></div></div>
+<p>
+ You are probably familiar with a statistics library that has free functions,
+ for example the classic <a href="http://nag.com/numeric/CL/CLdescription.asp" target="_top">NAG
+ C library</a> and matching <a href="http://nag.com/numeric/FL/FLdescription.asp" target="_top">NAG
+ FORTRAN Library</a>, <a href="http://office.microsoft.com/en-us/excel/HP052090051033.aspx" target="_top">Microsoft
+ Excel BINOMDIST(number_s,trials,probability_s,cumulative)</a>, R, <a href="http://www.ptc.com/products/mathcad/mathcad14/mathcad_func_chart.htm" target="_top">MathCAD
+ pbinom</a> and many others.
+ </p>
+<p>
+ If so, you may find 'Distributions as Objects' unfamiliar, if not alien.
+ </p>
+<p>
+ However, <span class="bold"><strong>do not panic</strong></span>, both definition
+ and usage are not really very different.
+ </p>
+<p>
+ A very simple example of generating the same values as the <a href="http://nag.com/numeric/CL/CLdescription.asp" target="_top">NAG
+ C library</a> for the binomial distribution follows. (If you find slightly
+ different values, the Boost C++ version, using double or better, is very
+ likely to be the more accurate. Of course, accuracy is not usually a concern
+ for most applications of this function).
+ </p>
+<p>
+ The <a href="http://www.nag.co.uk/numeric/cl/manual/pdf/G01/g01bjc.pdf" target="_top">NAG
+ function specification</a> is
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">nag_binomial_dist</span><span class="special">(</span><span class="identifier">Integer</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">Integer</span> <span class="identifier">k</span><span class="special">,</span>
+<span class="keyword">double</span> <span class="special">*</span><span class="identifier">plek</span><span class="special">,</span> <span class="keyword">double</span> <span class="special">*</span><span class="identifier">pgtk</span><span class="special">,</span> <span class="keyword">double</span> <span class="special">*</span><span class="identifier">peqk</span><span class="special">,</span> <span class="identifier">NagError</span> <span class="special">*</span><span class="identifier">fail</span><span class="special">)</span>
+</pre>
+<p>
+ and is called
+ </p>
+<pre class="programlisting"><span class="identifier">g01bjc</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">k</span><span class="special">,</span> <span class="special">&</span><span class="identifier">plek</span><span class="special">,</span> <span class="special">&</span><span class="identifier">pgtk</span><span class="special">,</span> <span class="special">&</span><span class="identifier">peqk</span><span class="special">,</span> <span class="identifier">NAGERR_DEFAULT</span><span class="special">);</span>
+</pre>
+<p>
+ The equivalent using this Boost C++ library is:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span> <span class="comment">// Using declaration avoids very long names.</span>
+<span class="identifier">binomial</span> <span class="identifier">my_dist</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span> <span class="comment">// c.f. NAG n = 4, p = 0.5</span>
+</pre>
+<p>
+ and values can be output thus:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span>
+ <span class="special"><<</span> <span class="identifier">my_dist</span><span class="special">.</span><span class="identifier">trials</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" "</span> <span class="comment">// Echo the NAG input n = 4 trials.</span>
+ <span class="special"><<</span> <span class="identifier">my_dist</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" "</span> <span class="comment">// Echo the NAG input p = 0.5</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">my_dist</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" "</span> <span class="comment">// NAG plek with k = 2</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">my_dist</span><span class="special">,</span> <span class="number">2</span><span class="special">))</span> <span class="special"><<</span> <span class="string">" "</span> <span class="comment">// NAG pgtk with k = 2</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">my_dist</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// NAG peqk with k = 2</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">k</span><span class="special">)</span></code> is
+ equivalent to NAG library <code class="computeroutput"><span class="identifier">plek</span></code>,
+ lower tail probability of <= k
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">k</span><span class="special">))</span></code> is
+ equivalent to NAG library <code class="computeroutput"><span class="identifier">pgtk</span></code>,
+ upper tail probability of > k
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">k</span><span class="special">)</span></code> is
+ equivalent to NAG library <code class="computeroutput"><span class="identifier">peqk</span></code>,
+ point probability of == k
+ </p>
+<p>
+ See binomial_example_nag.cpp
+ for details.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="find_eg/find_mean_and_sd_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="c_sharp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nccs_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nccs_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Non Central Chi Squared Example</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example">
+<link rel="next" href="nccs_eg/nccs_power_eg.html" title="Tables of the power function of the chi2 test.">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="inverse_chi_squared_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nccs_eg/nccs_power_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_nccs_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.nccs_eg"></a><a class="link" href="nccs_eg.html" title="Non Central Chi Squared Example">Non Central Chi
+ Squared Example</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="nccs_eg/nccs_power_eg.html">Tables
+ of the power function of the chi<sup>2</sup> test.</a></span></dt></dl></div>
+<p>
+ (See also the reference documentation for the <a class="link" href="../../dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">Noncentral
+ Chi Squared Distribution</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="inverse_chi_squared_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="nccs_eg/nccs_power_eg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nccs_eg/nccs_power_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/nccs_eg/nccs_power_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,1277 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tables of the power function of the chi2 test.</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../nccs_eg.html" title="Non Central Chi Squared Example">
+<link rel="prev" href="../nccs_eg.html" title="Non Central Chi Squared Example">
+<link rel="next" href="../error_eg.html" title="Error Handling Example">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../nccs_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../nccs_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../error_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_nccs_eg_nccs_power_eg">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.nccs_eg.nccs_power_eg"></a><a class="link" href="nccs_power_eg.html" title="Tables of the power function of the chi2 test.">Tables
+ of the power function of the chi<sup>2</sup> test.</a>
+</h5></div></div></div>
+<p>
+ This example computes a table of the power of the χ<sup>2</sup>
+test at the 5% significance
+ level, for various degrees of freedom and non-centrality parameters.
+ The table is deliberately the same as Table 6 from "The Non-Central
+ χ<sup>2</sup> and F-Distributions and their applications.", P. B. Patnaik, Biometrika,
+ Vol. 36, No. 1/2 (June 1949), 202-232.
+ </p>
+<p>
+ First we need some includes to access the non-central chi squared distribution
+ (and some basic std output of course).
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">non_central_chi_squared</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">chi_squared</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">non_central_chi_squared</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+</pre>
+<p>
+ Create a table of the power of the χ<sup>2</sup> test at 5% significance level, start
+ with a table header:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"[table\n[[[nu]]"</span><span class="special">;</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">lam</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span> <span class="identifier">lam</span> <span class="special"><=</span> <span class="number">20</span><span class="special">;</span> <span class="identifier">lam</span> <span class="special">+=</span> <span class="number">2</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"[[lambda]="</span> <span class="special"><<</span> <span class="identifier">lam</span> <span class="special"><<</span> <span class="string">"]"</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"]\n"</span><span class="special">;</span>
+</pre>
+<p>
+ (Note: the enclosing [] brackets are to format as a table in Boost.Quickbook).
+ </p>
+<p>
+ Enumerate the rows and columns and print the power of the test for each
+ table cell:
+ </p>
+<pre class="programlisting"><span class="keyword">for</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span> <span class="identifier">n</span> <span class="special"><=</span> <span class="number">20</span><span class="special">;</span> <span class="special">++</span><span class="identifier">n</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"[["</span> <span class="special"><<</span> <span class="identifier">n</span> <span class="special"><<</span> <span class="string">"]"</span><span class="special">;</span>
+ <span class="keyword">for</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">lam</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span> <span class="identifier">lam</span> <span class="special"><=</span> <span class="number">20</span><span class="special">;</span> <span class="identifier">lam</span> <span class="special">+=</span> <span class="number">2</span><span class="special">)</span>
+ <span class="special">{</span>
+</pre>
+<p>
+ Calculate the χ<sup>2</sup> statistic for a 5% significance:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">cs</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">chi_squared</span><span class="special">(</span><span class="identifier">n</span><span class="special">),</span> <span class="number">0.05</span><span class="special">));</span>
+</pre>
+<p>
+ The power of the test is given by the complement of the CDF of the non-central
+ χ<sup>2</sup> distribution:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">beta</span> <span class="special">=</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">non_central_chi_squared</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="identifier">lam</span><span class="special">),</span> <span class="identifier">cs</span><span class="special">));</span>
+</pre>
+<p>
+ Then output the cell value:
+ </p>
+<pre class="programlisting"> <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"["</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">beta</span> <span class="special"><<</span> <span class="string">"]"</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"]"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"]"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The output from this program is a table in Boost.Quickbook format as
+ shown below.
+ </p>
+<p>
+ We can interpret this as follows - for example if ν=10 and λ=10 then the
+ power of the test is 0.542 - so we have only a 54% chance of correctly
+ detecting that our null hypothesis is false, and a 46% chance of incurring
+ a type II error (failing to reject the null hypothesis when it is in
+ fact false):
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ ν
+ </p>
+ </th>
+<th>
+ <p>
+ λ=2
+ </p>
+ </th>
+<th>
+ <p>
+ λ=4
+ </p>
+ </th>
+<th>
+ <p>
+ λ=6
+ </p>
+ </th>
+<th>
+ <p>
+ λ=8
+ </p>
+ </th>
+<th>
+ <p>
+ λ=10
+ </p>
+ </th>
+<th>
+ <p>
+ λ=12
+ </p>
+ </th>
+<th>
+ <p>
+ λ=14
+ </p>
+ </th>
+<th>
+ <p>
+ λ=16
+ </p>
+ </th>
+<th>
+ <p>
+ λ=18
+ </p>
+ </th>
+<th>
+ <p>
+ λ=20
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ 0.226
+ </p>
+ </td>
+<td>
+ <p>
+ 0.415
+ </p>
+ </td>
+<td>
+ <p>
+ 0.584
+ </p>
+ </td>
+<td>
+ <p>
+ 0.718
+ </p>
+ </td>
+<td>
+ <p>
+ 0.815
+ </p>
+ </td>
+<td>
+ <p>
+ 0.883
+ </p>
+ </td>
+<td>
+ <p>
+ 0.928
+ </p>
+ </td>
+<td>
+ <p>
+ 0.957
+ </p>
+ </td>
+<td>
+ <p>
+ 0.974
+ </p>
+ </td>
+<td>
+ <p>
+ 0.985
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 3
+ </p>
+ </td>
+<td>
+ <p>
+ 0.192
+ </p>
+ </td>
+<td>
+ <p>
+ 0.359
+ </p>
+ </td>
+<td>
+ <p>
+ 0.518
+ </p>
+ </td>
+<td>
+ <p>
+ 0.654
+ </p>
+ </td>
+<td>
+ <p>
+ 0.761
+ </p>
+ </td>
+<td>
+ <p>
+ 0.84
+ </p>
+ </td>
+<td>
+ <p>
+ 0.896
+ </p>
+ </td>
+<td>
+ <p>
+ 0.934
+ </p>
+ </td>
+<td>
+ <p>
+ 0.959
+ </p>
+ </td>
+<td>
+ <p>
+ 0.975
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 4
+ </p>
+ </td>
+<td>
+ <p>
+ 0.171
+ </p>
+ </td>
+<td>
+ <p>
+ 0.32
+ </p>
+ </td>
+<td>
+ <p>
+ 0.47
+ </p>
+ </td>
+<td>
+ <p>
+ 0.605
+ </p>
+ </td>
+<td>
+ <p>
+ 0.716
+ </p>
+ </td>
+<td>
+ <p>
+ 0.802
+ </p>
+ </td>
+<td>
+ <p>
+ 0.866
+ </p>
+ </td>
+<td>
+ <p>
+ 0.912
+ </p>
+ </td>
+<td>
+ <p>
+ 0.943
+ </p>
+ </td>
+<td>
+ <p>
+ 0.964
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 5
+ </p>
+ </td>
+<td>
+ <p>
+ 0.157
+ </p>
+ </td>
+<td>
+ <p>
+ 0.292
+ </p>
+ </td>
+<td>
+ <p>
+ 0.433
+ </p>
+ </td>
+<td>
+ <p>
+ 0.564
+ </p>
+ </td>
+<td>
+ <p>
+ 0.677
+ </p>
+ </td>
+<td>
+ <p>
+ 0.769
+ </p>
+ </td>
+<td>
+ <p>
+ 0.839
+ </p>
+ </td>
+<td>
+ <p>
+ 0.89
+ </p>
+ </td>
+<td>
+ <p>
+ 0.927
+ </p>
+ </td>
+<td>
+ <p>
+ 0.952
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 6
+ </p>
+ </td>
+<td>
+ <p>
+ 0.146
+ </p>
+ </td>
+<td>
+ <p>
+ 0.27
+ </p>
+ </td>
+<td>
+ <p>
+ 0.403
+ </p>
+ </td>
+<td>
+ <p>
+ 0.531
+ </p>
+ </td>
+<td>
+ <p>
+ 0.644
+ </p>
+ </td>
+<td>
+ <p>
+ 0.738
+ </p>
+ </td>
+<td>
+ <p>
+ 0.813
+ </p>
+ </td>
+<td>
+ <p>
+ 0.869
+ </p>
+ </td>
+<td>
+ <p>
+ 0.911
+ </p>
+ </td>
+<td>
+ <p>
+ 0.94
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 7
+ </p>
+ </td>
+<td>
+ <p>
+ 0.138
+ </p>
+ </td>
+<td>
+ <p>
+ 0.252
+ </p>
+ </td>
+<td>
+ <p>
+ 0.378
+ </p>
+ </td>
+<td>
+ <p>
+ 0.502
+ </p>
+ </td>
+<td>
+ <p>
+ 0.614
+ </p>
+ </td>
+<td>
+ <p>
+ 0.71
+ </p>
+ </td>
+<td>
+ <p>
+ 0.788
+ </p>
+ </td>
+<td>
+ <p>
+ 0.849
+ </p>
+ </td>
+<td>
+ <p>
+ 0.895
+ </p>
+ </td>
+<td>
+ <p>
+ 0.928
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+<td>
+ <p>
+ 0.131
+ </p>
+ </td>
+<td>
+ <p>
+ 0.238
+ </p>
+ </td>
+<td>
+ <p>
+ 0.357
+ </p>
+ </td>
+<td>
+ <p>
+ 0.477
+ </p>
+ </td>
+<td>
+ <p>
+ 0.588
+ </p>
+ </td>
+<td>
+ <p>
+ 0.685
+ </p>
+ </td>
+<td>
+ <p>
+ 0.765
+ </p>
+ </td>
+<td>
+ <p>
+ 0.829
+ </p>
+ </td>
+<td>
+ <p>
+ 0.879
+ </p>
+ </td>
+<td>
+ <p>
+ 0.915
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 9
+ </p>
+ </td>
+<td>
+ <p>
+ 0.125
+ </p>
+ </td>
+<td>
+ <p>
+ 0.225
+ </p>
+ </td>
+<td>
+ <p>
+ 0.339
+ </p>
+ </td>
+<td>
+ <p>
+ 0.454
+ </p>
+ </td>
+<td>
+ <p>
+ 0.564
+ </p>
+ </td>
+<td>
+ <p>
+ 0.661
+ </p>
+ </td>
+<td>
+ <p>
+ 0.744
+ </p>
+ </td>
+<td>
+ <p>
+ 0.811
+ </p>
+ </td>
+<td>
+ <p>
+ 0.863
+ </p>
+ </td>
+<td>
+ <p>
+ 0.903
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+<td>
+ <p>
+ 0.121
+ </p>
+ </td>
+<td>
+ <p>
+ 0.215
+ </p>
+ </td>
+<td>
+ <p>
+ 0.323
+ </p>
+ </td>
+<td>
+ <p>
+ 0.435
+ </p>
+ </td>
+<td>
+ <p>
+ 0.542
+ </p>
+ </td>
+<td>
+ <p>
+ 0.64
+ </p>
+ </td>
+<td>
+ <p>
+ 0.723
+ </p>
+ </td>
+<td>
+ <p>
+ 0.793
+ </p>
+ </td>
+<td>
+ <p>
+ 0.848
+ </p>
+ </td>
+<td>
+ <p>
+ 0.891
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+<td>
+ <p>
+ 0.117
+ </p>
+ </td>
+<td>
+ <p>
+ 0.206
+ </p>
+ </td>
+<td>
+ <p>
+ 0.309
+ </p>
+ </td>
+<td>
+ <p>
+ 0.417
+ </p>
+ </td>
+<td>
+ <p>
+ 0.523
+ </p>
+ </td>
+<td>
+ <p>
+ 0.62
+ </p>
+ </td>
+<td>
+ <p>
+ 0.704
+ </p>
+ </td>
+<td>
+ <p>
+ 0.775
+ </p>
+ </td>
+<td>
+ <p>
+ 0.833
+ </p>
+ </td>
+<td>
+ <p>
+ 0.878
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 12
+ </p>
+ </td>
+<td>
+ <p>
+ 0.113
+ </p>
+ </td>
+<td>
+ <p>
+ 0.198
+ </p>
+ </td>
+<td>
+ <p>
+ 0.297
+ </p>
+ </td>
+<td>
+ <p>
+ 0.402
+ </p>
+ </td>
+<td>
+ <p>
+ 0.505
+ </p>
+ </td>
+<td>
+ <p>
+ 0.601
+ </p>
+ </td>
+<td>
+ <p>
+ 0.686
+ </p>
+ </td>
+<td>
+ <p>
+ 0.759
+ </p>
+ </td>
+<td>
+ <p>
+ 0.818
+ </p>
+ </td>
+<td>
+ <p>
+ 0.866
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+<td>
+ <p>
+ 0.11
+ </p>
+ </td>
+<td>
+ <p>
+ 0.191
+ </p>
+ </td>
+<td>
+ <p>
+ 0.286
+ </p>
+ </td>
+<td>
+ <p>
+ 0.387
+ </p>
+ </td>
+<td>
+ <p>
+ 0.488
+ </p>
+ </td>
+<td>
+ <p>
+ 0.584
+ </p>
+ </td>
+<td>
+ <p>
+ 0.669
+ </p>
+ </td>
+<td>
+ <p>
+ 0.743
+ </p>
+ </td>
+<td>
+ <p>
+ 0.804
+ </p>
+ </td>
+<td>
+ <p>
+ 0.854
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 14
+ </p>
+ </td>
+<td>
+ <p>
+ 0.108
+ </p>
+ </td>
+<td>
+ <p>
+ 0.185
+ </p>
+ </td>
+<td>
+ <p>
+ 0.276
+ </p>
+ </td>
+<td>
+ <p>
+ 0.374
+ </p>
+ </td>
+<td>
+ <p>
+ 0.473
+ </p>
+ </td>
+<td>
+ <p>
+ 0.567
+ </p>
+ </td>
+<td>
+ <p>
+ 0.653
+ </p>
+ </td>
+<td>
+ <p>
+ 0.728
+ </p>
+ </td>
+<td>
+ <p>
+ 0.791
+ </p>
+ </td>
+<td>
+ <p>
+ 0.842
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 15
+ </p>
+ </td>
+<td>
+ <p>
+ 0.105
+ </p>
+ </td>
+<td>
+ <p>
+ 0.179
+ </p>
+ </td>
+<td>
+ <p>
+ 0.267
+ </p>
+ </td>
+<td>
+ <p>
+ 0.362
+ </p>
+ </td>
+<td>
+ <p>
+ 0.459
+ </p>
+ </td>
+<td>
+ <p>
+ 0.552
+ </p>
+ </td>
+<td>
+ <p>
+ 0.638
+ </p>
+ </td>
+<td>
+ <p>
+ 0.713
+ </p>
+ </td>
+<td>
+ <p>
+ 0.777
+ </p>
+ </td>
+<td>
+ <p>
+ 0.83
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 16
+ </p>
+ </td>
+<td>
+ <p>
+ 0.103
+ </p>
+ </td>
+<td>
+ <p>
+ 0.174
+ </p>
+ </td>
+<td>
+ <p>
+ 0.259
+ </p>
+ </td>
+<td>
+ <p>
+ 0.351
+ </p>
+ </td>
+<td>
+ <p>
+ 0.446
+ </p>
+ </td>
+<td>
+ <p>
+ 0.538
+ </p>
+ </td>
+<td>
+ <p>
+ 0.623
+ </p>
+ </td>
+<td>
+ <p>
+ 0.699
+ </p>
+ </td>
+<td>
+ <p>
+ 0.764
+ </p>
+ </td>
+<td>
+ <p>
+ 0.819
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 0.101
+ </p>
+ </td>
+<td>
+ <p>
+ 0.169
+ </p>
+ </td>
+<td>
+ <p>
+ 0.251
+ </p>
+ </td>
+<td>
+ <p>
+ 0.341
+ </p>
+ </td>
+<td>
+ <p>
+ 0.434
+ </p>
+ </td>
+<td>
+ <p>
+ 0.525
+ </p>
+ </td>
+<td>
+ <p>
+ 0.609
+ </p>
+ </td>
+<td>
+ <p>
+ 0.686
+ </p>
+ </td>
+<td>
+ <p>
+ 0.752
+ </p>
+ </td>
+<td>
+ <p>
+ 0.807
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 18
+ </p>
+ </td>
+<td>
+ <p>
+ 0.0992
+ </p>
+ </td>
+<td>
+ <p>
+ 0.165
+ </p>
+ </td>
+<td>
+ <p>
+ 0.244
+ </p>
+ </td>
+<td>
+ <p>
+ 0.332
+ </p>
+ </td>
+<td>
+ <p>
+ 0.423
+ </p>
+ </td>
+<td>
+ <p>
+ 0.512
+ </p>
+ </td>
+<td>
+ <p>
+ 0.596
+ </p>
+ </td>
+<td>
+ <p>
+ 0.673
+ </p>
+ </td>
+<td>
+ <p>
+ 0.74
+ </p>
+ </td>
+<td>
+ <p>
+ 0.796
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 19
+ </p>
+ </td>
+<td>
+ <p>
+ 0.0976
+ </p>
+ </td>
+<td>
+ <p>
+ 0.161
+ </p>
+ </td>
+<td>
+ <p>
+ 0.238
+ </p>
+ </td>
+<td>
+ <p>
+ 0.323
+ </p>
+ </td>
+<td>
+ <p>
+ 0.412
+ </p>
+ </td>
+<td>
+ <p>
+ 0.5
+ </p>
+ </td>
+<td>
+ <p>
+ 0.584
+ </p>
+ </td>
+<td>
+ <p>
+ 0.66
+ </p>
+ </td>
+<td>
+ <p>
+ 0.728
+ </p>
+ </td>
+<td>
+ <p>
+ 0.786
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 20
+ </p>
+ </td>
+<td>
+ <p>
+ 0.0961
+ </p>
+ </td>
+<td>
+ <p>
+ 0.158
+ </p>
+ </td>
+<td>
+ <p>
+ 0.232
+ </p>
+ </td>
+<td>
+ <p>
+ 0.315
+ </p>
+ </td>
+<td>
+ <p>
+ 0.402
+ </p>
+ </td>
+<td>
+ <p>
+ 0.489
+ </p>
+ </td>
+<td>
+ <p>
+ 0.572
+ </p>
+ </td>
+<td>
+ <p>
+ 0.648
+ </p>
+ </td>
+<td>
+ <p>
+ 0.716
+ </p>
+ </td>
+<td>
+ <p>
+ 0.775
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ See nc_chi_sq_example.cpp
+ for the full C++ source code.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../nccs_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../nccs_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../error_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Negative Binomial Distribution Examples</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="geometric_eg.html" title="Geometric Distribution Examples">
+<link rel="next" href="neg_binom_eg/neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="geometric_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="neg_binom_eg/neg_binom_conf.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_neg_binom_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.neg_binom_eg"></a><a class="link" href="neg_binom_eg.html" title="Negative Binomial Distribution Examples">Negative Binomial
+ Distribution Examples</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="neg_binom_eg/neg_binom_conf.html">Calculating
+ Confidence Limits on the Frequency of Occurrence for the Negative Binomial
+ Distribution</a></span></dt>
+<dt><span class="section"><a href="neg_binom_eg/neg_binom_size_eg.html">Estimating
+ Sample Sizes for the Negative Binomial.</a></span></dt>
+<dt><span class="section"><a href="neg_binom_eg/negative_binomial_example1.html">Negative
+ Binomial Sales Quota Example.</a></span></dt>
+<dt><span class="section"><a href="neg_binom_eg/negative_binomial_example2.html">Negative
+ Binomial Table Printing Example.</a></span></dt>
+</dl></div>
+<p>
+ (See also the reference documentation for the <a class="link" href="../../dist_ref/dists/negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
+ Binomial Distribution</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="geometric_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="neg_binom_eg/neg_binom_conf.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_conf.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_conf.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,211 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../neg_binom_eg.html" title="Negative Binomial Distribution Examples">
+<link rel="prev" href="../neg_binom_eg.html" title="Negative Binomial Distribution Examples">
+<link rel="next" href="neg_binom_size_eg.html" title="Estimating Sample Sizes for the Negative Binomial.">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../neg_binom_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="neg_binom_size_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_neg_binom_eg_neg_binom_conf">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.neg_binom_eg.neg_binom_conf"></a><a class="link" href="neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">Calculating
+ Confidence Limits on the Frequency of Occurrence for the Negative Binomial
+ Distribution</a>
+</h5></div></div></div>
+<p>
+ Imagine you have a process that follows a negative binomial distribution:
+ for each trial conducted, an event either occurs or does it does not,
+ referred to as "successes" and "failures". The frequency
+ with which successes occur is variously referred to as the success fraction,
+ success ratio, success percentage, occurrence frequency, or probability
+ of occurrence.
+ </p>
+<p>
+ If, by experiment, you want to measure the the best estimate of success
+ fraction is given simply by <span class="emphasis"><em>k</em></span> / <span class="emphasis"><em>N</em></span>,
+ for <span class="emphasis"><em>k</em></span> successes out of <span class="emphasis"><em>N</em></span> trials.
+ </p>
+<p>
+ However our confidence in that estimate will be shaped by how many trials
+ were conducted, and how many successes were observed. The static member
+ functions <code class="computeroutput"><span class="identifier">negative_binomial_distribution</span><span class="special"><>::</span><span class="identifier">find_lower_bound_on_p</span></code>
+ and <code class="computeroutput"><span class="identifier">negative_binomial_distribution</span><span class="special"><>::</span><span class="identifier">find_upper_bound_on_p</span></code>
+ allow you to calculate the confidence intervals for your estimate of
+ the success fraction.
+ </p>
+<p>
+ The sample program neg_binom_confidence_limits.cpp
+ illustrates their use.
+ </p>
+<p>
+ First we need some includes to access the negative binomial distribution
+ (and some basic std output of course).
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+<span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fixed</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">right</span><span class="special">;</span>
+</pre>
+<p>
+ First define a table of significance levels: these are the probabilities
+ that the true occurrence frequency lies outside the calculated interval:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.25</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">,</span> <span class="number">0.00001</span> <span class="special">};</span>
+</pre>
+<p>
+ Confidence value as % is (1 - alpha) * 100, so alpha 0.05 == 95% confidence
+ that the true occurence frequency lies <span class="bold"><strong>inside</strong></span>
+ the calculated interval.
+ </p>
+<p>
+ We need a function to calculate and print confidence limits for an observed
+ frequency of occurrence that follows a negative binomial distribution.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">confidence_limits_on_frequency</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">trials</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">successes</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// trials = Total number of trials.</span>
+ <span class="comment">// successes = Total number of observed successes.</span>
+ <span class="comment">// failures = trials - successes.</span>
+ <span class="comment">// success_fraction = successes /trials.</span>
+ <span class="comment">// Print out general info:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"______________________________________________\n"</span>
+ <span class="string">"2-Sided Confidence Limits For Success Fraction\n"</span>
+ <span class="string">"______________________________________________\n\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">7</span><span class="special">);</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of trials"</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">trials</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of successes"</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">successes</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of failures"</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">trials</span> <span class="special">-</span> <span class="identifier">successes</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Observed frequency of occurrence"</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="keyword">double</span><span class="special">(</span><span class="identifier">successes</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">trials</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+
+ <span class="comment">// Print table header:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n\n"</span>
+ <span class="string">"___________________________________________\n"</span>
+ <span class="string">"Confidence Lower Upper\n"</span>
+ <span class="string">" Value (%) Limit Limit\n"</span>
+ <span class="string">"___________________________________________\n"</span><span class="special">;</span>
+</pre>
+<p>
+ And now for the important part - the bounds themselves. For each value
+ of <span class="emphasis"><em>alpha</em></span>, we call <code class="computeroutput"><span class="identifier">find_lower_bound_on_p</span></code>
+ and <code class="computeroutput"><span class="identifier">find_upper_bound_on_p</span></code>
+ to obtain lower and upper bounds respectively. Note that since we are
+ calculating a two-sided interval, we must divide the value of alpha in
+ two. Had we been calculating a single-sided interval, for example: <span class="emphasis"><em>"Calculate
+ a lower bound so that we are P% sure that the true occurrence frequency
+ is greater than some value"</em></span> then we would <span class="bold"><strong>not</strong></span>
+ have divided by two.
+ </p>
+<pre class="programlisting"> <span class="comment">// Now print out the upper and lower limits for the alpha table values.</span>
+ <span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// Confidence value:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="number">100</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+ <span class="comment">// Calculate bounds:</span>
+ <span class="keyword">double</span> <span class="identifier">lower</span> <span class="special">=</span> <span class="identifier">negative_binomial</span><span class="special">::</span><span class="identifier">find_lower_bound_on_p</span><span class="special">(</span><span class="identifier">trials</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]/</span><span class="number">2</span><span class="special">);</span>
+ <span class="keyword">double</span> <span class="identifier">upper</span> <span class="special">=</span> <span class="identifier">negative_binomial</span><span class="special">::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span><span class="identifier">trials</span><span class="special">,</span> <span class="identifier">successes</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]/</span><span class="number">2</span><span class="special">);</span>
+ <span class="comment">// Print limits:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">lower</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">upper</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// void confidence_limits_on_frequency(unsigned trials, unsigned successes)</span>
+</pre>
+<p>
+ And then call confidence_limits_on_frequency with increasing numbers
+ of trials, but always the same success fraction 0.1, or 1 in 10.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">confidence_limits_on_frequency</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span> <span class="comment">// 20 trials, 2 successes, 2 in 20, = 1 in 10 = 0.1 success fraction.</span>
+ <span class="identifier">confidence_limits_on_frequency</span><span class="special">(</span><span class="number">200</span><span class="special">,</span> <span class="number">20</span><span class="special">);</span> <span class="comment">// More trials, but same 0.1 success fraction.</span>
+ <span class="identifier">confidence_limits_on_frequency</span><span class="special">(</span><span class="number">2000</span><span class="special">,</span> <span class="number">200</span><span class="special">);</span> <span class="comment">// Many more trials, but same 0.1 success fraction.</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// int main()</span>
+</pre>
+<p>
+ Let's see some sample output for a 1 in 10 success ratio, first for a
+ mere 20 trials:
+ </p>
+<pre class="programlisting">______________________________________________
+2-Sided Confidence Limits For Success Fraction
+______________________________________________
+Number of trials = 20
+Number of successes = 2
+Number of failures = 18
+Observed frequency of occurrence = 0.1
+___________________________________________
+Confidence Lower Upper
+ Value (%) Limit Limit
+___________________________________________
+ 50.000 0.04812 0.13554
+ 75.000 0.03078 0.17727
+ 90.000 0.01807 0.22637
+ 95.000 0.01235 0.26028
+ 99.000 0.00530 0.33111
+ 99.900 0.00164 0.41802
+ 99.990 0.00051 0.49202
+ 99.999 0.00016 0.55574
+</pre>
+<p>
+ As you can see, even at the 95% confidence level the bounds (0.012 to
+ 0.26) are really very wide, and very asymmetric about the observed value
+ 0.1.
+ </p>
+<p>
+ Compare that with the program output for a mass 2000 trials:
+ </p>
+<pre class="programlisting">______________________________________________
+2-Sided Confidence Limits For Success Fraction
+______________________________________________
+Number of trials = 2000
+Number of successes = 200
+Number of failures = 1800
+Observed frequency of occurrence = 0.1
+___________________________________________
+Confidence Lower Upper
+ Value (%) Limit Limit
+___________________________________________
+ 50.000 0.09536 0.10445
+ 75.000 0.09228 0.10776
+ 90.000 0.08916 0.11125
+ 95.000 0.08720 0.11352
+ 99.000 0.08344 0.11802
+ 99.900 0.07921 0.12336
+ 99.990 0.07577 0.12795
+ 99.999 0.07282 0.13206
+</pre>
+<p>
+ Now even when the confidence level is very high, the limits (at 99.999%,
+ 0.07 to 0.13) are really quite close and nearly symmetric to the observed
+ value of 0.1.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../neg_binom_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="neg_binom_size_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,197 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Estimating Sample Sizes for the Negative Binomial.</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../neg_binom_eg.html" title="Negative Binomial Distribution Examples">
+<link rel="prev" href="neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">
+<link rel="next" href="negative_binomial_example1.html" title="Negative Binomial Sales Quota Example.">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="neg_binom_conf.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="negative_binomial_example1.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_neg_binom_eg_neg_binom_size_eg">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.neg_binom_eg.neg_binom_size_eg"></a><a class="link" href="neg_binom_size_eg.html" title="Estimating Sample Sizes for the Negative Binomial.">Estimating
+ Sample Sizes for the Negative Binomial.</a>
+</h5></div></div></div>
+<p>
+ Imagine you have an event (let's call it a "failure" - though
+ we could equally well call it a success if we felt it was a 'good' event)
+ that you know will occur in 1 in N trials. You may want to know how many
+ trials you need to conduct to be P% sure of observing at least k such
+ failures. If the failure events follow a negative binomial distribution
+ (each trial either succeeds or fails) then the static member function
+ <code class="computeroutput"><span class="identifier">negative_binomial_distibution</span><span class="special"><>::</span><span class="identifier">find_minimum_number_of_trials</span></code>
+ can be used to estimate the minimum number of trials required to be P%
+ sure of observing the desired number of failures.
+ </p>
+<p>
+ The example program neg_binomial_sample_sizes.cpp
+ demonstrates its usage.
+ </p>
+<p>
+ It centres around a routine that prints out a table of minimum sample
+ sizes (number of trials) for various probability thresholds:
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">find_number_of_trials</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">failures</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ First define a table of significance levels: these are the maximum acceptable
+ probability that <span class="emphasis"><em>failure</em></span> or fewer events will be
+ observed.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.25</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">,</span> <span class="number">0.00001</span> <span class="special">};</span>
+</pre>
+<p>
+ Confidence value as % is (1 - alpha) * 100, so alpha 0.05 == 95% confidence
+ that the desired number of failures will be observed. The values range
+ from a very low 0.5 or 50% confidence up to an extremely high confidence
+ of 99.999.
+ </p>
+<p>
+ Much of the rest of the program is pretty-printing, the important part
+ is in the calculation of minimum number of trials required for each value
+ of alpha using:
+ </p>
+<pre class="programlisting"><span class="special">(</span><span class="keyword">int</span><span class="special">)</span><span class="identifier">ceil</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">::</span><span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span><span class="identifier">failures</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+</pre>
+<p>
+ find_minimum_number_of_trials returns a double, so <code class="computeroutput"><span class="identifier">ceil</span></code>
+ rounds this up to ensure we have an integral minimum number of trials.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">find_number_of_trials</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">failures</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">p</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// trials = number of trials</span>
+ <span class="comment">// failures = number of failures before achieving required success(es).</span>
+ <span class="comment">// p = success fraction (0 <= p <= 1.).</span>
+ <span class="comment">//</span>
+ <span class="comment">// Calculate how many trials we need to ensure the</span>
+ <span class="comment">// required number of failures DOES exceed "failures".</span>
+
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="string">"Target number of failures = "</span> <span class="special"><<</span> <span class="special">(</span><span class="keyword">int</span><span class="special">)</span><span class="identifier">failures</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">", Success fraction = "</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="number">100</span> <span class="special">*</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="string">"%"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Print table header:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"____________________________\n"</span>
+ <span class="string">"Confidence Min Number\n"</span>
+ <span class="string">" Value (%) Of Trials \n"</span>
+ <span class="string">"____________________________\n"</span><span class="special">;</span>
+ <span class="comment">// Now print out the data for the alpha table values.</span>
+ <span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">{</span> <span class="comment">// Confidence values %:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="number">100</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">])</span> <span class="special"><<</span> <span class="string">" "</span>
+ <span class="comment">// find_minimum_number_of_trials</span>
+ <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">6</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span>
+ <span class="special"><<</span> <span class="special">(</span><span class="keyword">int</span><span class="special">)</span><span class="identifier">ceil</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">::</span><span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span><span class="identifier">failures</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]))</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// void find_number_of_trials(double failures, double p)</span>
+</pre>
+<p>
+ finally we can produce some tables of minimum trials for the chosen confidence
+ levels:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">find_number_of_trials</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span>
+ <span class="identifier">find_number_of_trials</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span>
+ <span class="identifier">find_number_of_trials</span><span class="special">(</span><span class="number">500</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span>
+ <span class="identifier">find_number_of_trials</span><span class="special">(</span><span class="number">50</span><span class="special">,</span> <span class="number">0.1</span><span class="special">);</span>
+ <span class="identifier">find_number_of_trials</span><span class="special">(</span><span class="number">500</span><span class="special">,</span> <span class="number">0.1</span><span class="special">);</span>
+ <span class="identifier">find_number_of_trials</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">0.9</span><span class="special">);</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// int main()</span>
+</pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ Since we're calculating the <span class="emphasis"><em>minimum</em></span> number of
+ trials required, we'll err on the safe side and take the ceiling of
+ the result. Had we been calculating the <span class="emphasis"><em>maximum</em></span>
+ number of trials permitted to observe less than a certain number of
+ <span class="emphasis"><em>failures</em></span> then we would have taken the floor instead.
+ We would also have called <code class="computeroutput"><span class="identifier">find_minimum_number_of_trials</span></code>
+ like this:
+ </p>
+<pre class="programlisting"><span class="identifier">floor</span><span class="special">(</span><span class="identifier">negative_binomial</span><span class="special">::</span><span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span><span class="identifier">failures</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]))</span>
+</pre>
+<p>
+ which would give us the largest number of trials we could conduct and
+ still be P% sure of observing <span class="emphasis"><em>failures or less</em></span>
+ failure events, when the probability of success is <span class="emphasis"><em>p</em></span>.
+ </p>
+</td></tr>
+</table></div>
+<p>
+ We'll finish off by looking at some sample output, firstly suppose we
+ wish to observe at least 5 "failures" with a 50/50 (0.5) chance
+ of success or failure:
+ </p>
+<pre class="programlisting">Target number of failures = 5, Success fraction = 50%
+
+____________________________
+Confidence Min Number
+ Value (%) Of Trials
+____________________________
+ 50.000 11
+ 75.000 14
+ 90.000 17
+ 95.000 18
+ 99.000 22
+ 99.900 27
+ 99.990 31
+ 99.999 36
+
+</pre>
+<p>
+ So 18 trials or more would yield a 95% chance that at least our 5 required
+ failures would be observed.
+ </p>
+<p>
+ Compare that to what happens if the success ratio is 90%:
+ </p>
+<pre class="programlisting">Target number of failures = 5.000, Success fraction = 90.000%
+
+____________________________
+Confidence Min Number
+ Value (%) Of Trials
+____________________________
+ 50.000 57
+ 75.000 73
+ 90.000 91
+ 95.000 103
+ 99.000 127
+ 99.900 159
+ 99.990 189
+ 99.999 217
+</pre>
+<p>
+ So now 103 trials are required to observe at least 5 failures with 95%
+ certainty.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="neg_binom_conf.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="negative_binomial_example1.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,497 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Negative Binomial Sales Quota Example.</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../neg_binom_eg.html" title="Negative Binomial Distribution Examples">
+<link rel="prev" href="neg_binom_size_eg.html" title="Estimating Sample Sizes for the Negative Binomial.">
+<link rel="next" href="negative_binomial_example2.html" title="Negative Binomial Table Printing Example.">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="neg_binom_size_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="negative_binomial_example2.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_neg_binom_eg_negative_binomial_example1">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.neg_binom_eg.negative_binomial_example1"></a><a class="link" href="negative_binomial_example1.html" title="Negative Binomial Sales Quota Example.">Negative
+ Binomial Sales Quota Example.</a>
+</h5></div></div></div>
+<p>
+ This example program <a href="../../../../../../example/negative_binomial_example1.cpp" target="_top">negative_binomial_example1.cpp
+ (full source code)</a> demonstrates a simple use to find the probability
+ of meeting a sales quota.
+ </p>
+<p>
+ Based on <a href="http://en.wikipedia.org/wiki/Negative_binomial_distribution" target="_top">a
+ problem by Dr. Diane Evans, Professor of Mathematics at Rose-Hulman Institute
+ of Technology</a>.
+ </p>
+<p>
+ Pat is required to sell candy bars to raise money for the 6th grade field
+ trip. There are thirty houses in the neighborhood, and Pat is not supposed
+ to return home until five candy bars have been sold. So the child goes
+ door to door, selling candy bars. At each house, there is a 0.4 probability
+ (40%) of selling one candy bar and a 0.6 probability (60%) of selling
+ nothing.
+ </p>
+<p>
+ What is the probability mass (density) function (pdf) for selling the
+ last (fifth) candy bar at the nth house?
+ </p>
+<p>
+ The Negative Binomial(r, p) distribution describes the probability of
+ k failures and r successes in k+r Bernoulli(p) trials with success on
+ the last trial. (A <a href="http://en.wikipedia.org/wiki/Bernoulli_distribution" target="_top">Bernoulli
+ trial</a> is one with only two possible outcomes, success of failure,
+ and p is the probability of success). See also <a href="http://en.wikipedia.org/wiki/Bernoulli_distribution" target="_top">Bernoulli
+ distribution</a> and <a href="http://www.math.uah.edu/stat/bernoulli/Introduction.xhtml" target="_top">Bernoulli
+ applications</a>.
+ </p>
+<p>
+ In this example, we will deliberately produce a variety of calculations
+ and outputs to demonstrate the ways that the negative binomial distribution
+ can be implemented with this library: it is also deliberately over-commented.
+ </p>
+<p>
+ First we need to #define macros to control the error and discrete handling
+ policies. For this simple example, we want to avoid throwing an exception
+ (the default policy) and just return infinity. We want to treat the distribution
+ as if it was continuous, so we choose a discrete_quantile policy of real,
+ rather than the default policy integer_round_outwards.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_OVERFLOW_ERROR_POLICY</span> <span class="identifier">ignore_error</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span> <span class="identifier">real</span>
+</pre>
+<p>
+ After that we need some includes to provide easy access to the negative
+ binomial distribution,
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ It is vital to #include distributions etc <span class="bold"><strong>after</strong></span>
+ the above #defines
+ </p></td></tr>
+</table></div>
+<p>
+ and we need some std library iostream, of course.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+ <span class="comment">// for negative_binomial_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">negative_binomial</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+ <span class="keyword">using</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">pdf</span><span class="special">;</span> <span class="comment">// Probability mass function.</span>
+ <span class="keyword">using</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cdf</span><span class="special">;</span> <span class="comment">// Cumulative density function.</span>
+ <span class="keyword">using</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quantile</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">noshowpoint</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fixed</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">right</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">;</span>
+</pre>
+<p>
+ It is always sensible to use try and catch blocks because defaults policies
+ are to throw an exception if anything goes wrong.
+ </p>
+<p>
+ A simple catch block (see below) will ensure that you get a helpful error
+ message instead of an abrupt program abort.
+ </p>
+<pre class="programlisting"><span class="keyword">try</span>
+<span class="special">{</span>
+</pre>
+<p>
+ Selling five candy bars means getting five successes, so successes r
+ = 5. The total number of trials (n, in this case, houses visited) this
+ takes is therefore = sucesses + failures or k + r = k + 5.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">sales_quota</span> <span class="special">=</span> <span class="number">5</span><span class="special">;</span> <span class="comment">// Pat's sales quota - successes (r).</span>
+</pre>
+<p>
+ At each house, there is a 0.4 probability (40%) of selling one candy
+ bar and a 0.6 probability (60%) of selling nothing.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">success_fraction</span> <span class="special">=</span> <span class="number">0.4</span><span class="special">;</span> <span class="comment">// success_fraction (p) - so failure_fraction is 0.6.</span>
+</pre>
+<p>
+ The Negative Binomial(r, p) distribution describes the probability of
+ k failures and r successes in k+r Bernoulli(p) trials with success on
+ the last trial. (A <a href="http://en.wikipedia.org/wiki/Bernoulli_distribution" target="_top">Bernoulli
+ trial</a> is one with only two possible outcomes, success of failure,
+ and p is the probability of success).
+ </p>
+<p>
+ We therefore start by constructing a negative binomial distribution with
+ parameters sales_quota (required successes) and probability of success.
+ </p>
+<pre class="programlisting"><span class="identifier">negative_binomial</span> <span class="identifier">nb</span><span class="special">(</span><span class="identifier">sales_quota</span><span class="special">,</span> <span class="identifier">success_fraction</span><span class="special">);</span> <span class="comment">// type double by default.</span>
+</pre>
+<p>
+ To confirm, display the success_fraction & successes parameters of
+ the distribution.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Pat has a sales per house success rate of "</span> <span class="special"><<</span> <span class="identifier">success_fraction</span>
+ <span class="special"><<</span> <span class="string">".\nTherefore he would, on average, sell "</span> <span class="special"><<</span> <span class="identifier">nb</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">()</span> <span class="special">*</span> <span class="number">100</span>
+ <span class="special"><<</span> <span class="string">" bars after trying 100 houses."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">all_houses</span> <span class="special">=</span> <span class="number">30</span><span class="special">;</span> <span class="comment">// The number of houses on the estate.</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"With a success rate of "</span> <span class="special"><<</span> <span class="identifier">nb</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">", he might expect, on average,\n"</span>
+ <span class="string">"to need to visit about "</span> <span class="special"><<</span> <span class="identifier">success_fraction</span> <span class="special">*</span> <span class="identifier">all_houses</span>
+ <span class="special"><<</span> <span class="string">" houses in order to sell all "</span> <span class="special"><<</span> <span class="identifier">nb</span><span class="special">.</span><span class="identifier">successes</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" bars. "</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Pat has a sales per house success rate of 0.4.
+Therefore he would, on average, sell 40 bars after trying 100 houses.
+With a success rate of 0.4, he might expect, on average,
+to need to visit about 12 houses in order to sell all 5 bars.
+</pre>
+<p>
+ The random variable of interest is the number of houses that must be
+ visited to sell five candy bars, so we substitute k = n - 5 into a negative_binomial(5,
+ 0.4) and obtain the <a class="link" href="../../../dist_ref/nmp.html#math_toolkit.dist_ref.nmp.pdf">probability
+ mass (density) function (pdf or pmf)</a> of the distribution of houses
+ visited. Obviously, the best possible case is that Pat makes sales on
+ all the first five houses.
+ </p>
+<p>
+ We calculate this using the pdf function:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="string">"th house is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">5</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// == pdf(nb, 0)</span>
+</pre>
+<p>
+ Of course, he could not finish on fewer than 5 houses because he must
+ sell 5 candy bars. So the 5th house is the first that he could possibly
+ finish on.
+ </p>
+<p>
+ To finish on or before the 8th house, Pat must finish at the 5th, 6th,
+ 7th or 8th house. The probability that he will finish on <span class="bold"><strong>exactly</strong></span>
+ ( == ) on any house is the Probability Density Function (pdf).
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the 6th house is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">6</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the 7th house is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">7</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the 8th house is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">8</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability that Pat finishes on the 6th house is 0.03072
+Probability that Pat finishes on the 7th house is 0.055296
+Probability that Pat finishes on the 8th house is 0.077414
+</pre>
+<p>
+ The sum of the probabilities for these houses is the Cumulative Distribution
+ Function (cdf). We can calculate it by adding the individual probabilities.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on or before the 8th house is sum "</span>
+ <span class="string">"\n"</span> <span class="special"><<</span> <span class="string">"pdf(sales_quota) + pdf(6) + pdf(7) + pdf(8) = "</span>
+ <span class="comment">// Sum each of the mass/density probabilities for houses sales_quota = 5, 6, 7, & 8.</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">5</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="comment">// 0 failures.</span>
+ <span class="special">+</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">6</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="comment">// 1 failure.</span>
+ <span class="special">+</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">7</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="comment">// 2 failures.</span>
+ <span class="special">+</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">8</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="comment">// 3 failures.</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">pdf(sales_quota) + pdf(6) + pdf(7) + pdf(8) = 0.17367
+</pre>
+<p>
+ Or, usually better, by using the negative binomial <span class="bold"><strong>cumulative</strong></span>
+ distribution function.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span>
+ <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="number">8</span> <span class="special"><<</span> <span class="string">"th house is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">8</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of selling his quota of 5 bars on or before the 8th house is 0.17367
+</pre>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability that Pat finishes exactly on the 10th house is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">10</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span>
+ <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="number">10</span> <span class="special"><<</span> <span class="string">"th house is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">10</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability that Pat finishes exactly on the 10th house is 0.10033
+Probability of selling his quota of 5 bars on or before the 10th house is 0.3669
+</pre>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes exactly on the 11th house is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">11</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span>
+ <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="number">11</span> <span class="special"><<</span> <span class="string">"th house is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">11</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability that Pat finishes on the 11th house is 0.10033
+Probability of selling his quota of 5 candy bars
+on or before the 11th house is 0.46723
+</pre>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes exactly on the 12th house is "</span>
+ <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">12</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span>
+ <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="number">12</span> <span class="special"><<</span> <span class="string">"th house is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">12</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability that Pat finishes on the 12th house is 0.094596
+Probability of selling his quota of 5 candy bars
+on or before the 12th house is 0.56182
+</pre>
+<p>
+ Finally consider the risk of Pat not selling his quota of 5 bars even
+ after visiting all the houses. Calculate the probability that he <span class="emphasis"><em>will</em></span>
+ sell on or before the last house: Calculate the probability that he would
+ sell all his quota on the very last house.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the "</span> <span class="special"><<</span> <span class="identifier">all_houses</span>
+ <span class="special"><<</span> <span class="string">" house is "</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">all_houses</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Probability of selling his quota of 5 bars on the 30th house is
+ </p>
+<pre class="programlisting">Probability that Pat finishes on the 30 house is 0.00069145
+</pre>
+<p>
+ when he'd be very unlucky indeed!
+ </p>
+<p>
+ What is the probability that Pat exhausts all 30 houses in the neighborhood,
+ and <span class="bold"><strong>still</strong></span> doesn't sell the required
+ 5 candy bars?
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span>
+ <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="identifier">all_houses</span> <span class="special"><<</span> <span class="string">"th house is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">all_houses</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of selling his quota of 5 bars
+on or before the 30th house is 0.99849
+</pre>
+<p>
+ /*<code class="computeroutput"><span class="identifier">So</span> <span class="identifier">the</span>
+ <span class="identifier">risk</span> <span class="identifier">of</span>
+ <span class="identifier">failing</span> <span class="identifier">even</span>
+ <span class="identifier">after</span> <span class="identifier">visiting</span>
+ <span class="identifier">all</span> <span class="identifier">the</span>
+ <span class="identifier">houses</span> <span class="identifier">is</span>
+ <span class="number">1</span> <span class="special">-</span> <span class="keyword">this</span> <span class="identifier">probability</span><span class="special">,</span> </code><code class="computeroutput"><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">all_houses</span>
+ <span class="special">-</span> <span class="identifier">sales_quota</span></code><code class="computeroutput">
+ <span class="identifier">But</span> <span class="keyword">using</span>
+ <span class="keyword">this</span> <span class="identifier">expression</span>
+ <span class="identifier">may</span> <span class="identifier">cause</span>
+ <span class="identifier">serious</span> <span class="identifier">inaccuracy</span><span class="special">,</span> <span class="identifier">so</span> <span class="identifier">it</span> <span class="identifier">would</span>
+ <span class="identifier">be</span> <span class="identifier">much</span>
+ <span class="identifier">better</span> <span class="identifier">to</span>
+ <span class="identifier">use</span> <span class="identifier">the</span>
+ <span class="identifier">complement</span> <span class="identifier">of</span>
+ <span class="identifier">the</span> <span class="identifier">cdf</span><span class="special">:</span> <span class="identifier">So</span> <span class="identifier">the</span> <span class="identifier">risk</span>
+ <span class="identifier">of</span> <span class="identifier">failing</span>
+ <span class="identifier">even</span> <span class="identifier">at</span><span class="special">,</span> <span class="keyword">or</span> <span class="identifier">after</span><span class="special">,</span> <span class="identifier">the</span> <span class="number">31</span><span class="identifier">th</span> <span class="special">(</span><span class="identifier">non</span><span class="special">-</span><span class="identifier">existent</span><span class="special">)</span>
+ <span class="identifier">houses</span> <span class="identifier">is</span>
+ <span class="number">1</span> <span class="special">-</span> <span class="keyword">this</span> <span class="identifier">probability</span><span class="special">,</span> </code><code class="computeroutput"><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">all_houses</span>
+ <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span></code>` But using this expression may cause
+ serious inaccuracy. So it would be much better to use the complement
+ of the cdf. <a class="link" href="../../overview/complements.html#why_complements">Why complements?</a>
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of failing to sell his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span>
+ <span class="special"><<</span> <span class="string">" bars\neven after visiting all "</span> <span class="special"><<</span> <span class="identifier">all_houses</span> <span class="special"><<</span> <span class="string">" houses is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">all_houses</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of failing to sell his quota of 5 bars
+even after visiting all 30 houses is 0.0015101
+</pre>
+<p>
+ We can also use the quantile (percentile), the inverse of the cdf, to
+ predict which house Pat will finish on. So for the 8th house:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="special">(</span><span class="number">8</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">));</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of meeting sales quota on or before 8th house is "</span><span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">Probability of meeting sales quota on or before 8th house is 0.174
+</pre>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="identifier">p</span>
+ <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">cout</span><span class="special"><<</span> <span class="string">" quantile(nb, p) = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">If the confidence of meeting sales quota is 0.17367, then the finishing house is 8
+</pre>
+<p>
+ Demanding absolute certainty that all 5 will be sold, implies an infinite
+ number of trials. (Of course, there are only 30 houses on the estate,
+ so he can't ever be <span class="bold"><strong>certain</strong></span> of selling
+ his quota).
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="number">1.</span>
+ <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// 1.#INF == infinity.</span>
+</pre>
+<pre class="programlisting">If the confidence of meeting sales quota is 1, then the finishing house is 1.#INF
+</pre>
+<p>
+ And similarly for a few other probabilities:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="number">0.</span>
+ <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">0.</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="number">0.5</span>
+ <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">0.5</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="number">1</span> <span class="special">-</span> <span class="number">0.00151</span> <span class="comment">// 30 th</span>
+ <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">1</span> <span class="special">-</span> <span class="number">0.00151</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">If the confidence of meeting sales quota is 0, then the finishing house is 5
+If the confidence of meeting sales quota is 0.5, then the finishing house is 11.337
+If the confidence of meeting sales quota is 0.99849, then the finishing house is 30
+</pre>
+<p>
+ Notice that because we chose a discrete quantile policy of real, the
+ result can be an 'unreal' fractional house.
+ </p>
+<p>
+ If the opposite is true, we don't want to assume any confidence, then
+ this is tantamount to assuming that all the first sales_quota trials
+ will be successful sales.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If confidence of meeting quota is zero\n(we assume all houses are successful sales)"</span>
+ <span class="string">", then finishing house is "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">If confidence of meeting quota is zero (we assume all houses are successful sales), then finishing house is 5
+If confidence of meeting quota is 0, then finishing house is 5
+</pre>
+<p>
+ We can list quantiles for a few probabilities:
+ </p>
+<pre class="programlisting"> <span class="keyword">double</span> <span class="identifier">ps</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">0.</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.9</span><span class="special">,</span> <span class="number">0.95</span><span class="special">,</span> <span class="number">0.99</span><span class="special">,</span> <span class="number">0.999</span><span class="special">,</span> <span class="number">1.</span><span class="special">};</span>
+ <span class="comment">// Confidence as fraction = 1-alpha, as percent = 100 * (1-alpha[i]) %</span>
+ <span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">ps</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">ps</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="identifier">i</span><span class="special">++)</span>
+ <span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If confidence of meeting quota is "</span> <span class="special"><<</span> <span class="identifier">ps</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span>
+ <span class="special"><<</span> <span class="string">", then finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">ps</span><span class="special">[</span><span class="identifier">i</span><span class="special">])</span> <span class="special">+</span> <span class="identifier">sales_quota</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<pre class="programlisting">If confidence of meeting quota is 0, then finishing house is 5
+If confidence of meeting quota is 0.001, then finishing house is 5
+If confidence of meeting quota is 0.01, then finishing house is 5
+If confidence of meeting quota is 0.05, then finishing house is 6.2
+If confidence of meeting quota is 0.1, then finishing house is 7.06
+If confidence of meeting quota is 0.5, then finishing house is 11.3
+If confidence of meeting quota is 0.9, then finishing house is 17.8
+If confidence of meeting quota is 0.95, then finishing house is 20.1
+If confidence of meeting quota is 0.99, then finishing house is 24.8
+If confidence of meeting quota is 0.999, then finishing house is 31.1
+If confidence of meeting quota is 1, then finishing house is 1.#INF
+</pre>
+<p>
+ We could have applied a ceil function to obtain a 'worst case' integer
+ value for house.
+ </p>
+<pre class="programlisting"><span class="identifier">ceil</span><span class="special">(</span><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">ps</span><span class="special">[</span><span class="identifier">i</span><span class="special">]))</span></pre>
+<p>
+ Or, if we had used the default discrete quantile policy, integer_outside,
+ by omitting
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span> <span class="identifier">real</span></pre>
+<p>
+ we would have achieved the same effect.
+ </p>
+<p>
+ The real result gives some suggestion which house is most likely. For
+ example, compare the real and integer_outside for 95% confidence.
+ </p>
+<pre class="programlisting">If confidence of meeting quota is 0.95, then finishing house is 20.1
+If confidence of meeting quota is 0.95, then finishing house is 21
+</pre>
+<p>
+ The real value 20.1 is much closer to 20 than 21, so integer_outside
+ is pessimistic. We could also use integer_round_nearest policy to suggest
+ that 20 is more likely.
+ </p>
+<p>
+ Finally, we can tabulate the probability for the last sale being exactly
+ on each house.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nHouse for "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="string">"th (last) sale. Probability (%)"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="special">(</span><span class="keyword">int</span><span class="special">)</span><span class="identifier">sales_quota</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">all_houses</span><span class="special">+</span><span class="number">1</span><span class="special">;</span> <span class="identifier">i</span><span class="special">++)</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="string">" "</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">8</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">i</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</spa
n>
+<span class="special">}</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting">House for 5 th (last) sale. Probability (%)
+5 0.01024
+6 0.04096
+7 0.096256
+8 0.17367
+9 0.26657
+10 0.3669
+11 0.46723
+12 0.56182
+13 0.64696
+14 0.72074
+15 0.78272
+16 0.83343
+17 0.874
+18 0.90583
+19 0.93039
+20 0.94905
+21 0.96304
+22 0.97342
+23 0.98103
+24 0.98655
+25 0.99053
+26 0.99337
+27 0.99539
+28 0.99681
+29 0.9978
+30 0.99849
+</pre>
+<p>
+ As noted above, using a catch block is always a good idea, even if you
+ do not expect to use it.
+ </p>
+<pre class="programlisting"><span class="special">}</span>
+<span class="keyword">catch</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">&</span> <span class="identifier">e</span><span class="special">)</span>
+<span class="special">{</span> <span class="comment">// Since we have set an overflow policy of ignore_error,</span>
+ <span class="comment">// an overflow exception should never be thrown.</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nMessage from thrown exception was:\n "</span> <span class="special"><<</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ For example, without a ignore domain error policy, if we asked for
+ </p>
+<pre class="programlisting"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span></pre>
+<p>
+ for example, we would get:
+ </p>
+<pre class="programlisting">Message from thrown exception was:
+ Error in function boost::math::pdf(const negative_binomial_distribution<double>&, double):
+ Number of failures argument is -1, but must be >= 0 !
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="neg_binom_size_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="negative_binomial_example2.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,126 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Negative Binomial Table Printing Example.</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../neg_binom_eg.html" title="Negative Binomial Distribution Examples">
+<link rel="prev" href="negative_binomial_example1.html" title="Negative Binomial Sales Quota Example.">
+<link rel="next" href="../normal_example.html" title="Normal Distribution Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="negative_binomial_example1.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../normal_example.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_neg_binom_eg_negative_binomial_example2">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.neg_binom_eg.negative_binomial_example2"></a><a class="link" href="negative_binomial_example2.html" title="Negative Binomial Table Printing Example.">Negative
+ Binomial Table Printing Example.</a>
+</h5></div></div></div>
+<p>
+ Example program showing output of a table of values of cdf and pdf for
+ various k failures.
+ </p>
+<pre class="programlisting"><span class="comment">// Print a table of values that can be used to plot</span>
+<span class="comment">// using Excel, or some other superior graphical display tool.</span>
+
+<span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">17</span><span class="special">);</span> <span class="comment">// Use max_digits10 precision, the maximum available for a reference table.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">showpoint</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// include trailing zeros.</span>
+<span class="comment">// This is a maximum possible precision for the type (here double) to suit a reference table.</span>
+<span class="keyword">int</span> <span class="identifier">maxk</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="number">2.</span> <span class="special">*</span> <span class="identifier">mynbdist</span><span class="special">.</span><span class="identifier">successes</span><span class="special">()</span> <span class="special">/</span> <span class="identifier">mynbdist</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">());</span>
+<span class="comment">// This maxk shows most of the range of interest, probability about 0.0001 to 0.999.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="string">" k pdf cdf"</span><span class="string">"\n"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">k</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">k</span> <span class="special"><</span> <span class="identifier">maxk</span><span class="special">;</span> <span class="identifier">k</span><span class="special">++)</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">17</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">showpoint</span>
+ <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">k</span> <span class="special"><<</span> <span class="string">", "</span>
+ <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">25</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">mynbdist</span><span class="special">,</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="identifier">k</span><span class="special">))</span>
+ <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">25</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">mynbdist</span><span class="special">,</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="identifier">k</span><span class="special">))</span>
+ <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<pre class="programlisting"><span class="identifier">k</span> <span class="identifier">pdf</span> <span class="identifier">cdf</span>
+ <span class="number">0</span><span class="special">,</span> <span class="number">1.5258789062500000e-005</span> <span class="number">1.5258789062500003e-005</span>
+ <span class="number">1</span><span class="special">,</span> <span class="number">9.1552734375000000e-005</span> <span class="number">0.00010681152343750000</span>
+ <span class="number">2</span><span class="special">,</span> <span class="number">0.00030899047851562522</span> <span class="number">0.00041580200195312500</span>
+ <span class="number">3</span><span class="special">,</span> <span class="number">0.00077247619628906272</span> <span class="number">0.0011882781982421875</span>
+ <span class="number">4</span><span class="special">,</span> <span class="number">0.0015932321548461918</span> <span class="number">0.0027815103530883789</span>
+ <span class="number">5</span><span class="special">,</span> <span class="number">0.0028678178787231476</span> <span class="number">0.0056493282318115234</span>
+ <span class="number">6</span><span class="special">,</span> <span class="number">0.0046602040529251142</span> <span class="number">0.010309532284736633</span>
+ <span class="number">7</span><span class="special">,</span> <span class="number">0.0069903060793876605</span> <span class="number">0.017299838364124298</span>
+ <span class="number">8</span><span class="special">,</span> <span class="number">0.0098301179241389001</span> <span class="number">0.027129956288263202</span>
+ <span class="number">9</span><span class="special">,</span> <span class="number">0.013106823898851871</span> <span class="number">0.040236780187115073</span>
+<span class="number">10</span><span class="special">,</span> <span class="number">0.016711200471036140</span> <span class="number">0.056947980658151209</span>
+<span class="number">11</span><span class="special">,</span> <span class="number">0.020509200578089786</span> <span class="number">0.077457181236241013</span>
+<span class="number">12</span><span class="special">,</span> <span class="number">0.024354675686481652</span> <span class="number">0.10181185692272265</span>
+<span class="number">13</span><span class="special">,</span> <span class="number">0.028101548869017230</span> <span class="number">0.12991340579173993</span>
+<span class="number">14</span><span class="special">,</span> <span class="number">0.031614242477644432</span> <span class="number">0.16152764826938440</span>
+<span class="number">15</span><span class="special">,</span> <span class="number">0.034775666725408917</span> <span class="number">0.19630331499479325</span>
+<span class="number">16</span><span class="special">,</span> <span class="number">0.037492515688331451</span> <span class="number">0.23379583068312471</span>
+<span class="number">17</span><span class="special">,</span> <span class="number">0.039697957787645101</span> <span class="number">0.27349378847076977</span>
+<span class="number">18</span><span class="special">,</span> <span class="number">0.041352039362130305</span> <span class="number">0.31484582783290005</span>
+<span class="number">19</span><span class="special">,</span> <span class="number">0.042440250924291580</span> <span class="number">0.35728607875719176</span>
+<span class="number">20</span><span class="special">,</span> <span class="number">0.042970754060845245</span> <span class="number">0.40025683281803687</span>
+<span class="number">21</span><span class="special">,</span> <span class="number">0.042970754060845225</span> <span class="number">0.44322758687888220</span>
+<span class="number">22</span><span class="special">,</span> <span class="number">0.042482450037426581</span> <span class="number">0.48571003691630876</span>
+<span class="number">23</span><span class="special">,</span> <span class="number">0.041558918514873783</span> <span class="number">0.52726895543118257</span>
+<span class="number">24</span><span class="special">,</span> <span class="number">0.040260202311284021</span> <span class="number">0.56752915774246648</span>
+<span class="number">25</span><span class="special">,</span> <span class="number">0.038649794218832620</span> <span class="number">0.60617895196129912</span>
+<span class="number">26</span><span class="special">,</span> <span class="number">0.036791631035234917</span> <span class="number">0.64297058299653398</span>
+<span class="number">27</span><span class="special">,</span> <span class="number">0.034747651533277427</span> <span class="number">0.67771823452981139</span>
+<span class="number">28</span><span class="special">,</span> <span class="number">0.032575923312447595</span> <span class="number">0.71029415784225891</span>
+<span class="number">29</span><span class="special">,</span> <span class="number">0.030329307911589130</span> <span class="number">0.74062346575384819</span>
+<span class="number">30</span><span class="special">,</span> <span class="number">0.028054609818219924</span> <span class="number">0.76867807557206813</span>
+<span class="number">31</span><span class="special">,</span> <span class="number">0.025792141284492545</span> <span class="number">0.79447021685656061</span>
+<span class="number">32</span><span class="special">,</span> <span class="number">0.023575629142856460</span> <span class="number">0.81804584599941710</span>
+<span class="number">33</span><span class="special">,</span> <span class="number">0.021432390129869489</span> <span class="number">0.83947823612928651</span>
+<span class="number">34</span><span class="special">,</span> <span class="number">0.019383705779220189</span> <span class="number">0.85886194190850684</span>
+<span class="number">35</span><span class="special">,</span> <span class="number">0.017445335201298231</span> <span class="number">0.87630727710980494</span>
+<span class="number">36</span><span class="special">,</span> <span class="number">0.015628112784496322</span> <span class="number">0.89193538989430121</span>
+<span class="number">37</span><span class="special">,</span> <span class="number">0.013938587078064250</span> <span class="number">0.90587397697236549</span>
+<span class="number">38</span><span class="special">,</span> <span class="number">0.012379666154859701</span> <span class="number">0.91825364312722524</span>
+<span class="number">39</span><span class="special">,</span> <span class="number">0.010951243136991251</span> <span class="number">0.92920488626421649</span>
+<span class="number">40</span><span class="special">,</span> <span class="number">0.0096507830144735539</span> <span class="number">0.93885566927869002</span>
+<span class="number">41</span><span class="special">,</span> <span class="number">0.0084738582566109364</span> <span class="number">0.94732952753530097</span>
+<span class="number">42</span><span class="special">,</span> <span class="number">0.0074146259745345548</span> <span class="number">0.95474415350983555</span>
+<span class="number">43</span><span class="special">,</span> <span class="number">0.0064662435824429246</span> <span class="number">0.96121039709227851</span>
+<span class="number">44</span><span class="special">,</span> <span class="number">0.0056212231142827853</span> <span class="number">0.96683162020656122</span>
+<span class="number">45</span><span class="special">,</span> <span class="number">0.0048717266990450708</span> <span class="number">0.97170334690560634</span>
+<span class="number">46</span><span class="special">,</span> <span class="number">0.0042098073105878630</span> <span class="number">0.97591315421619418</span>
+<span class="number">47</span><span class="special">,</span> <span class="number">0.0036275999165703964</span> <span class="number">0.97954075413276465</span>
+<span class="number">48</span><span class="special">,</span> <span class="number">0.0031174686783026818</span> <span class="number">0.98265822281106729</span>
+<span class="number">49</span><span class="special">,</span> <span class="number">0.0026721160099737302</span> <span class="number">0.98533033882104104</span>
+<span class="number">50</span><span class="special">,</span> <span class="number">0.0022846591885275322</span> <span class="number">0.98761499800956853</span>
+<span class="number">51</span><span class="special">,</span> <span class="number">0.0019486798960970148</span> <span class="number">0.98956367790566557</span>
+<span class="number">52</span><span class="special">,</span> <span class="number">0.0016582516423517923</span> <span class="number">0.99122192954801736</span>
+<span class="number">53</span><span class="special">,</span> <span class="number">0.0014079495076571762</span> <span class="number">0.99262987905567457</span>
+<span class="number">54</span><span class="special">,</span> <span class="number">0.0011928461106539983</span> <span class="number">0.99382272516632852</span>
+<span class="number">55</span><span class="special">,</span> <span class="number">0.0010084971662802015</span> <span class="number">0.99483122233260868</span>
+<span class="number">56</span><span class="special">,</span> <span class="number">0.00085091948404891532</span> <span class="number">0.99568214181665760</span>
+<span class="number">57</span><span class="special">,</span> <span class="number">0.00071656377604119542</span> <span class="number">0.99639870559269883</span>
+<span class="number">58</span><span class="special">,</span> <span class="number">0.00060228420831048650</span> <span class="number">0.99700098980100937</span>
+<span class="number">59</span><span class="special">,</span> <span class="number">0.00050530624256557675</span> <span class="number">0.99750629604357488</span>
+<span class="number">60</span><span class="special">,</span> <span class="number">0.00042319397814867202</span> <span class="number">0.99792949002172360</span>
+<span class="number">61</span><span class="special">,</span> <span class="number">0.00035381791615708398</span> <span class="number">0.99828330793788067</span>
+<span class="number">62</span><span class="special">,</span> <span class="number">0.00029532382517950324</span> <span class="number">0.99857863176306016</span>
+<span class="number">63</span><span class="special">,</span> <span class="number">0.00024610318764958566</span> <span class="number">0.99882473495070978</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="negative_binomial_example1.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../normal_example.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/normal_example.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/normal_example.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Normal Distribution Examples</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="neg_binom_eg/negative_binomial_example2.html" title="Negative Binomial Table Printing Example.">
+<link rel="next" href="normal_example/normal_misc.html" title="Some Miscellaneous Examples of the Normal (Gaussian) Distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="neg_binom_eg/negative_binomial_example2.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="normal_example/normal_misc.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_normal_example">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.normal_example"></a><a class="link" href="normal_example.html" title="Normal Distribution Examples">Normal Distribution
+ Examples</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="normal_example/normal_misc.html">Some
+ Miscellaneous Examples of the Normal (Gaussian) Distribution</a></span></dt></dl></div>
+<p>
+ (See also the reference documentation for the <a class="link" href="../../dist_ref/dists/normal_dist.html" title="Normal (Gaussian) Distribution">Normal
+ Distribution</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="neg_binom_eg/negative_binomial_example2.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="normal_example/normal_misc.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/normal_example/normal_misc.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/normal_example/normal_misc.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,508 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Some Miscellaneous Examples of the Normal (Gaussian) Distribution</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../normal_example.html" title="Normal Distribution Examples">
+<link rel="prev" href="../normal_example.html" title="Normal Distribution Examples">
+<link rel="next" href="../inverse_chi_squared_eg.html" title="Inverse Chi-Squared Distribution Bayes Example">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../normal_example.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../normal_example.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../inverse_chi_squared_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_normal_example_normal_misc">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.normal_example.normal_misc"></a><a class="link" href="normal_misc.html" title="Some Miscellaneous Examples of the Normal (Gaussian) Distribution">Some
+ Miscellaneous Examples of the Normal (Gaussian) Distribution</a>
+</h5></div></div></div>
+<p>
+ The sample program normal_misc_examples.cpp
+ illustrates their use.
+ </p>
+<h5>
+<a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.h0"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.traditional_tables"></a></span><a class="link" href="normal_misc.html#math_toolkit.stat_tut.weg.normal_example.normal_misc.traditional_tables">Traditional
+ Tables</a>
+ </h5>
+<p>
+ First we need some includes to access the normal distribution (and some
+ std output of course).
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">normal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for normal_distribution</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">normal</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpoint</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">noshowpoint</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Example: Normal distribution, Miscellaneous Applications."</span><span class="special">;</span>
+
+ <span class="keyword">try</span>
+ <span class="special">{</span>
+ <span class="special">{</span> <span class="comment">// Traditional tables and values.</span>
+</pre>
+<p>
+ Let's start by printing some traditional tables.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">step</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span> <span class="comment">// in z </span>
+<span class="keyword">double</span> <span class="identifier">range</span> <span class="special">=</span> <span class="number">4</span><span class="special">;</span> <span class="comment">// min and max z = -range to +range.</span>
+<span class="keyword">int</span> <span class="identifier">precision</span> <span class="special">=</span> <span class="number">17</span><span class="special">;</span> <span class="comment">// traditional tables are only computed to much lower precision.</span>
+<span class="comment">// but std::numeric_limits<double>::max_digits10; on new Standard Libraries gives</span>
+<span class="comment">// 17, the maximum number of digits that can possibly be significant.</span>
+<span class="comment">// std::numeric_limits<double>::digits10; == 15 is number of guaranteed digits,</span>
+<span class="comment">// the other two digits being 'noisy'.</span>
+
+<span class="comment">// Construct a standard normal distribution s</span>
+ <span class="identifier">normal</span> <span class="identifier">s</span><span class="special">;</span> <span class="comment">// (default mean = zero, and standard deviation = unity)</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard normal distribution, mean = "</span><span class="special"><<</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">", standard deviation = "</span> <span class="special"><<</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ First the probability distribution function (pdf).
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability distribution function values"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" z "</span> <span class="string">" pdf "</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">double</span> <span class="identifier">z</span> <span class="special">=</span> <span class="special">-</span><span class="identifier">range</span><span class="special">;</span> <span class="identifier">z</span> <span class="special"><</span> <span class="identifier">range</span> <span class="special">+</span> <span class="identifier">step</span><span class="special">;</span> <span class="identifier">z</span> <span class="special">+=</span> <span class="identifier">step</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">6</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">z</span> <span class="special"><<</span> <span class="string">" "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">precision</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">12</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">6</span><span class="special">);</span> <span class="comment">// default</span>
+</pre>
+<p>
+ And the area under the normal curve from -∞ up to z, the cumulative distribution
+ function (cdf).
+ </p>
+<pre class="programlisting"><span class="comment">// For a standard normal distribution </span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Standard normal mean = "</span><span class="special"><<</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">", standard deviation = "</span> <span class="special"><<</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Integral (area under the curve) from - infinity up to z "</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">" z "</span> <span class="string">" cdf "</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">double</span> <span class="identifier">z</span> <span class="special">=</span> <span class="special">-</span><span class="identifier">range</span><span class="special">;</span> <span class="identifier">z</span> <span class="special"><</span> <span class="identifier">range</span> <span class="special">+</span> <span class="identifier">step</span><span class="special">;</span> <span class="identifier">z</span> <span class="special">+=</span> <span class="identifier">step</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">6</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">z</span> <span class="special"><<</span> <span class="string">" "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">precision</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">12</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">6</span><span class="special">);</span> <span class="comment">// default</span>
+</pre>
+<p>
+ And all this you can do with a nanoscopic amount of work compared to
+ the team of <span class="bold"><strong>human computers</strong></span> toiling
+ with Milton Abramovitz and Irene Stegen at the US National Bureau of
+ Standards (now NIST). Starting
+ in 1938, their "Handbook of Mathematical Functions with Formulas,
+ Graphs and Mathematical Tables", was eventually published in 1964,
+ and has been reprinted numerous times since. (A major replacement is
+ planned at <a href="http://dlmf.nist.gov" target="_top">Digital Library of Mathematical
+ Functions</a>).
+ </p>
+<p>
+ Pretty-printing a traditional 2-dimensional table is left as an exercise
+ for the student, but why bother now that the Math Toolkit lets you write
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">z</span> <span class="special">=</span> <span class="number">2.</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Area for z = "</span> <span class="special"><<</span> <span class="identifier">z</span> <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// to get the area for z.</span>
+</pre>
+<p>
+ Correspondingly, we can obtain the traditional 'critical' values for
+ significance levels. For the 95% confidence level, the significance level
+ usually called alpha, is 0.05 = 1 - 0.95 (for a one-sided test), so we
+ can write
+ </p>
+<pre class="programlisting"> <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"95% of area has a z below "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="number">0.95</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// 95% of area has a z below 1.64485</span>
+</pre>
+<p>
+ and a two-sided test (a comparison between two levels, rather than a
+ one-sided test)
+ </p>
+<pre class="programlisting"> <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"95% of area has a z between "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="number">0.975</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">" and "</span> <span class="special"><<</span> <span class="special">-</span><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="number">0.975</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// 95% of area has a z between 1.95996 and -1.95996</span>
+</pre>
+<p>
+ First, define a table of significance levels: these are the probabilities
+ that the true occurrence frequency lies outside the calculated interval.
+ </p>
+<p>
+ It is convenient to have an alpha level for the probability that z lies
+ outside just one standard deviation. This will not be some nice neat
+ number like 0.05, but we can easily calculate it,
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha1</span> <span class="special">=</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="number">2</span><span class="special">;</span> <span class="comment">// 0.3173105078629142</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">17</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"Significance level for z == 1 is "</span> <span class="special"><<</span> <span class="identifier">alpha1</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ and place in our array of favorite alpha values.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">0.3173105078629142</span><span class="special">,</span> <span class="comment">// z for 1 standard deviation.</span>
+ <span class="number">0.20</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">,</span> <span class="number">0.00001</span> <span class="special">};</span>
+</pre>
+<p>
+ Confidence value as % is (1 - alpha) * 100 (so alpha 0.05 == 95% confidence)
+ that the true occurrence frequency lies <span class="bold"><strong>inside</strong></span>
+ the calculated interval.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"level of significance (alpha)"</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">4</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"2-sided 1 -sided z(alpha) "</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">15</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span> <span class="special">/</span><span class="number">2</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class=
"special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]/</span><span class="number">2</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Use quantile(complement(s, alpha[i]/2)) to avoid potential loss of accuracy from quantile(s, 1 - alpha[i]/2) </span>
+<span class="special">}</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Notice the distinction between one-sided (also called one-tailed) where
+ we are using a > <span class="bold"><strong>or</strong></span> < test (and
+ not both) and considering the area of the tail (integral) from z up to
+ +∞, and a two-sided test where we are using two > <span class="bold"><strong>and</strong></span>
+ < tests, and thus considering two tails, from -∞ up to z low and z high
+ up to +∞.
+ </p>
+<p>
+ So the 2-sided values alpha[i] are calculated using alpha[i]/2.
+ </p>
+<p>
+ If we consider a simple example of alpha = 0.05, then for a two-sided
+ test, the lower tail area from -∞ up to -1.96 is 0.025 (alpha/2) and the
+ upper tail area from +z up to +1.96 is also 0.025 (alpha/2), and the
+ area between -1.96 up to 12.96 is alpha = 0.95. and the sum of the two
+ tails is 0.025 + 0.025 = 0.05,
+ </p>
+<h5>
+<a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.h1"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.standard_deviations_either_side_"></a></span><a class="link" href="normal_misc.html#math_toolkit.stat_tut.weg.normal_example.normal_misc.standard_deviations_either_side_">Standard
+ deviations either side of the Mean</a>
+ </h5>
+<p>
+ Armed with the cumulative distribution function, we can easily calculate
+ the easy to remember proportion of values that lie within 1, 2 and 3
+ standard deviations from the mean.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">showpoint</span> <span class="special"><<</span> <span class="string">"cdf(s, s.standard_deviation()) = "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">())</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// from -infinity to 1 sd</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"cdf(complement(s, s.standard_deviation())) = "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction 1 standard deviation within either side of mean is "</span>
+ <span class="special"><<</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()))</span> <span class="special">*</span> <span class="number">2</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction 2 standard deviations within either side of mean is "</span>
+ <span class="special"><<</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="number">2</span> <span class="special">*</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()))</span> <span class="special">*</span> <span class="number">2</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction 3 standard deviations within either side of mean is "</span>
+ <span class="special"><<</span> <span class="number">1</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="number">3</span> <span class="special">*</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()))</span> <span class="special">*</span> <span class="number">2</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ To a useful precision, the 1, 2 & 3 percentages are 68, 95 and 99.7,
+ and these are worth memorising as useful 'rules of thumb', as, for example,
+ in <a href="http://en.wikipedia.org/wiki/Standard_deviation" target="_top">standard
+ deviation</a>:
+ </p>
+<pre class="programlisting">Fraction 1 standard deviation within either side of mean is 0.683
+Fraction 2 standard deviations within either side of mean is 0.954
+Fraction 3 standard deviations within either side of mean is 0.997
+</pre>
+<p>
+ We could of course get some really accurate values for these <a href="http://en.wikipedia.org/wiki/Confidence_interval" target="_top">confidence
+ intervals</a> by using cout.precision(15);
+ </p>
+<pre class="programlisting">Fraction 1 standard deviation within either side of mean is 0.682689492137086
+Fraction 2 standard deviations within either side of mean is 0.954499736103642
+Fraction 3 standard deviations within either side of mean is 0.997300203936740
+</pre>
+<p>
+ But before you get too excited about this impressive precision, don't
+ forget that the <span class="bold"><strong>confidence intervals of the standard
+ deviation</strong></span> are surprisingly wide, especially if you have estimated
+ the standard deviation from only a few measurements.
+ </p>
+<h5>
+<a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.h2"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.some_simple_examples"></a></span><a class="link" href="normal_misc.html#math_toolkit.stat_tut.weg.normal_example.normal_misc.some_simple_examples">Some
+ simple examples</a>
+ </h5>
+<h5>
+<a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.h3"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.life_of_light_bulbs"></a></span><a class="link" href="normal_misc.html#math_toolkit.stat_tut.weg.normal_example.normal_misc.life_of_light_bulbs">Life
+ of light bulbs</a>
+ </h5>
+<p>
+ Examples from K. Krishnamoorthy, Handbook of Statistical Distributions
+ with Applications, ISBN 1 58488 635 8, page 125... implemented using
+ the Math Toolkit library.
+ </p>
+<p>
+ A few very simple examples are shown here:
+ </p>
+<pre class="programlisting"><span class="comment">// K. Krishnamoorthy, Handbook of Statistical Distributions with Applications,</span>
+ <span class="comment">// ISBN 1 58488 635 8, page 125, example 10.3.5</span>
+</pre>
+<p>
+ Mean lifespan of 100 W bulbs is 1100 h with standard deviation of 100
+ h. Assuming, perhaps with little evidence and much faith, that the distribution
+ is normal, we construct a normal distribution called <span class="emphasis"><em>bulbs</em></span>
+ with these values:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">mean_life</span> <span class="special">=</span> <span class="number">1100.</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">life_standard_deviation</span> <span class="special">=</span> <span class="number">100.</span><span class="special">;</span>
+<span class="identifier">normal</span> <span class="identifier">bulbs</span><span class="special">(</span><span class="identifier">mean_life</span><span class="special">,</span> <span class="identifier">life_standard_deviation</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">expected_life</span> <span class="special">=</span> <span class="number">1000.</span><span class="special">;</span>
+</pre>
+<p>
+ The we can use the Cumulative distribution function to predict fractions
+ (or percentages, if * 100) that will last various lifetimes.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction of bulbs that will last at best (<=) "</span> <span class="comment">// P(X <= 1000)</span>
+ <span class="special"><<</span> <span class="identifier">expected_life</span> <span class="special"><<</span> <span class="string">" is "</span><span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">bulbs</span><span class="special">,</span> <span class="identifier">expected_life</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction of bulbs that will last at least (>) "</span> <span class="comment">// P(X > 1000)</span>
+ <span class="special"><<</span> <span class="identifier">expected_life</span> <span class="special"><<</span> <span class="string">" is "</span><span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">bulbs</span><span class="special">,</span> <span class="identifier">expected_life</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">min_life</span> <span class="special">=</span> <span class="number">900</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">max_life</span> <span class="special">=</span> <span class="number">1200</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction of bulbs that will last between "</span>
+ <span class="special"><<</span> <span class="identifier">min_life</span> <span class="special"><<</span> <span class="string">" and "</span> <span class="special"><<</span> <span class="identifier">max_life</span> <span class="special"><<</span> <span class="string">" is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">bulbs</span><span class="special">,</span> <span class="identifier">max_life</span><span class="special">)</span> <span class="comment">// P(X <= 1200)</span>
+ <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">bulbs</span><span class="special">,</span> <span class="identifier">min_life</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// P(X <= 900)</span>
+</pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Real-life failures are often very ab-normal, with a significant number
+ that 'dead-on-arrival' or suffer failure very early in their life:
+ the lifetime of the survivors of 'early mortality' may be well described
+ by the normal distribution.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.h4"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.how_many_onions"></a></span><a class="link" href="normal_misc.html#math_toolkit.stat_tut.weg.normal_example.normal_misc.how_many_onions">How
+ many onions?</a>
+ </h5>
+<p>
+ Weekly demand for 5 lb sacks of onions at a store is normally distributed
+ with mean 140 sacks and standard deviation 10.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="number">140.</span><span class="special">;</span> <span class="comment">// sacks per week.</span>
+<span class="keyword">double</span> <span class="identifier">standard_deviation</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
+<span class="identifier">normal</span> <span class="identifier">sacks</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">stock</span> <span class="special">=</span> <span class="number">160.</span><span class="special">;</span> <span class="comment">// per week.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Percentage of weeks overstocked "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">sacks</span><span class="special">,</span> <span class="identifier">stock</span><span class="special">)</span> <span class="special">*</span> <span class="number">100.</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// P(X <=160)</span>
+<span class="comment">// Percentage of weeks overstocked 97.7</span>
+</pre>
+<p>
+ So there will be lots of mouldy onions! So we should be able to say what
+ stock level will meet demand 95% of the weeks.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">stock_95</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">sacks</span><span class="special">,</span> <span class="number">0.95</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Store should stock "</span> <span class="special"><<</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">stock_95</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" sacks to meet 95% of demands."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ And it is easy to estimate how to meet 80% of demand, and waste even
+ less.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">stock_80</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">sacks</span><span class="special">,</span> <span class="number">0.80</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Store should stock "</span> <span class="special"><<</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">stock_80</span><span class="special">)</span> <span class="special"><<</span> <span class="string">" sacks to meet 8 out of 10 demands."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<h5>
+<a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.h5"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.packing_beef"></a></span><a class="link" href="normal_misc.html#math_toolkit.stat_tut.weg.normal_example.normal_misc.packing_beef">Packing
+ beef</a>
+ </h5>
+<p>
+ A machine is set to pack 3 kg of ground beef per pack. Over a long period
+ of time it is found that the average packed was 3 kg with a standard
+ deviation of 0.1 kg. Assuming the packing is normally distributed, we
+ can find the fraction (or %) of packages that weigh more than 3.1 kg.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="number">3.</span><span class="special">;</span> <span class="comment">// kg</span>
+<span class="keyword">double</span> <span class="identifier">standard_deviation</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">;</span> <span class="comment">// kg</span>
+<span class="identifier">normal</span> <span class="identifier">packs</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+
+<span class="keyword">double</span> <span class="identifier">max_weight</span> <span class="special">=</span> <span class="number">3.1</span><span class="special">;</span> <span class="comment">// kg</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Percentage of packs > "</span> <span class="special"><<</span> <span class="identifier">max_weight</span> <span class="special"><<</span> <span class="string">" is "</span>
+<span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">packs</span><span class="special">,</span> <span class="identifier">max_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// P(X > 3.1)</span>
+
+<span class="keyword">double</span> <span class="identifier">under_weight</span> <span class="special">=</span> <span class="number">2.9</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"fraction of packs <= "</span> <span class="special"><<</span> <span class="identifier">under_weight</span> <span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">mean</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">packs</span><span class="special">,</span> <span class="identifier">under_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// fraction of packs <= 2.9 with a mean of 3 is 0.841345</span>
+<span class="comment">// This is 0.84 - more than the target 0.95</span>
+<span class="comment">// Want 95% to be over this weight, so what should we set the mean weight to be?</span>
+<span class="comment">// KK StatCalc says:</span>
+<span class="keyword">double</span> <span class="identifier">over_mean</span> <span class="special">=</span> <span class="number">3.0664</span><span class="special">;</span>
+<span class="identifier">normal</span> <span class="identifier">xpacks</span><span class="special">(</span><span class="identifier">over_mean</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">under_weight</span>
+<span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">xpacks</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">xpacks</span><span class="special">,</span> <span class="identifier">under_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// fraction of packs >= 2.9 with a mean of 3.06449 is 0.950005</span>
+<span class="keyword">double</span> <span class="identifier">under_fraction</span> <span class="special">=</span> <span class="number">0.05</span><span class="special">;</span> <span class="comment">// so 95% are above the minimum weight mean - sd = 2.9</span>
+<span class="keyword">double</span> <span class="identifier">low_limit</span> <span class="special">=</span> <span class="identifier">standard_deviation</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">offset</span> <span class="special">=</span> <span class="identifier">mean</span> <span class="special">-</span> <span class="identifier">low_limit</span> <span class="special">-</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">packs</span><span class="special">,</span> <span class="identifier">under_fraction</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">nominal_mean</span> <span class="special">=</span> <span class="identifier">mean</span> <span class="special">+</span> <span class="identifier">offset</span><span class="special">;</span>
+
+<span class="identifier">normal</span> <span class="identifier">nominal_packs</span><span class="special">(</span><span class="identifier">nominal_mean</span><span class="special">,</span> <span class="identifier">standard_deviation</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Setting the packer to "</span> <span class="special"><<</span> <span class="identifier">nominal_mean</span> <span class="special"><<</span> <span class="string">" will mean that "</span>
+ <span class="special"><<</span> <span class="string">"fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">under_weight</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">nominal_packs</span><span class="special">,</span> <span class="identifier">under_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Setting the packer to 3.06449 will mean that fraction of packs >=
+ 2.9 is 0.95.
+ </p>
+<p>
+ Setting the packer to 3.13263 will mean that fraction of packs >=
+ 2.9 is 0.99, but will more than double the mean loss from 0.0644 to 0.133.
+ </p>
+<p>
+ Alternatively, we could invest in a better (more precise) packer with
+ a lower standard deviation.
+ </p>
+<p>
+ To estimate how much better (how much smaller standard deviation) it
+ would have to be, we need to get the 5% quantile to be located at the
+ under_weight limit, 2.9
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="number">0.05</span><span class="special">;</span> <span class="comment">// wanted p th quantile.</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Quantile of "</span> <span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">packs</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">", mean = "</span> <span class="special"><<</span> <span class="identifier">packs</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span> <span class="special"><<</span> <span class="string">", sd = "</span> <span class="special"><<</span> <span class="identifier">packs</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">//</span>
+</pre>
+<p>
+ Quantile of 0.05 = 2.83551, mean = 3, sd = 0.1
+ </p>
+<p>
+ With the current packer (mean = 3, sd = 0.1), the 5% quantile is at 2.8551
+ kg, a little below our target of 2.9 kg. So we know that the standard
+ deviation is going to have to be smaller.
+ </p>
+<p>
+ Let's start by guessing that it (now 0.1) needs to be halved, to a standard
+ deviation of 0.05
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">pack05</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Quantile of "</span> <span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">pack05</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">", mean = "</span> <span class="special"><<</span> <span class="identifier">pack05</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span> <span class="special"><<</span> <span class="string">", sd = "</span> <span class="special"><<</span> <span class="identifier">pack05</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"Fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">under_weight</span> <span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">mean</span>
+ <span class="special"><<</span> <span class="string">" and standard deviation of "</span> <span class="special"><<</span> <span class="identifier">pack05</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">pack05</span><span class="special">,</span> <span class="identifier">under_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">//</span>
+</pre>
+<p>
+ Fraction of packs >= 2.9 with a mean of 3 and standard deviation of
+ 0.05 is 0.9772
+ </p>
+<p>
+ So 0.05 was quite a good guess, but we are a little over the 2.9 target,
+ so the standard deviation could be a tiny bit more. So we could do some
+ more guessing to get closer, say by increasing to 0.06
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">pack06</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="number">0.06</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Quantile of "</span> <span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="string">" = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">pack06</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special"><<</span> <span class="string">", mean = "</span> <span class="special"><<</span> <span class="identifier">pack06</span><span class="special">.</span><span class="identifier">mean</span><span class="special">()</span> <span class="special"><<</span> <span class="string">", sd = "</span> <span class="special"><<</span> <span class="identifier">pack06</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"Fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">under_weight</span> <span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">mean</span>
+ <span class="special"><<</span> <span class="string">" and standard deviation of "</span> <span class="special"><<</span> <span class="identifier">pack06</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">pack06</span><span class="special">,</span> <span class="identifier">under_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ Fraction of packs >= 2.9 with a mean of 3 and standard deviation of
+ 0.06 is 0.9522
+ </p>
+<p>
+ Now we are getting really close, but to do the job properly, we could
+ use root finding method, for example the tools provided, and used elsewhere,
+ in the Math Toolkit, see <a class="link" href="../../../internals1/roots2.html" title="Root Finding Without Derivatives: Bisection, Bracket and TOMS748">Root
+ Finding Without Derivatives</a>.
+ </p>
+<p>
+ But in this normal distribution case, we could be even smarter and make
+ a direct calculation.
+ </p>
+<pre class="programlisting"><span class="identifier">normal</span> <span class="identifier">s</span><span class="special">;</span> <span class="comment">// For standard normal distribution, </span>
+<span class="keyword">double</span> <span class="identifier">sd</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">2.9</span><span class="special">;</span> <span class="comment">// Our required limit.</span>
+<span class="comment">// then probability p = N((x - mean) / sd)</span>
+<span class="comment">// So if we want to find the standard deviation that would be required to meet this limit,</span>
+<span class="comment">// so that the p th quantile is located at x,</span>
+<span class="comment">// in this case the 0.95 (95%) quantile at 2.9 kg pack weight, when the mean is 3 kg.</span>
+
+<span class="keyword">double</span> <span class="identifier">prob</span> <span class="special">=</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="special">(</span><span class="identifier">x</span> <span class="special">-</span> <span class="identifier">mean</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">sd</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">qp</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="number">0.95</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"prob = "</span> <span class="special"><<</span> <span class="identifier">prob</span> <span class="special"><<</span> <span class="string">", quantile(p) "</span> <span class="special"><<</span> <span class="identifier">qp</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// p = 0.241971, quantile(p) 1.64485</span>
+<span class="comment">// Rearranging, we can directly calculate the required standard deviation:</span>
+<span class="keyword">double</span> <span class="identifier">sd95</span> <span class="special">=</span> <span class="identifier">abs</span><span class="special">((</span><span class="identifier">x</span> <span class="special">-</span> <span class="identifier">mean</span><span class="special">))</span> <span class="special">/</span> <span class="identifier">qp</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If we want the "</span><span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="string">" th quantile to be located at "</span>
+ <span class="special"><<</span> <span class="identifier">x</span> <span class="special"><<</span> <span class="string">", would need a standard deviation of "</span> <span class="special"><<</span> <span class="identifier">sd95</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">normal</span> <span class="identifier">pack95</span><span class="special">(</span><span class="identifier">mean</span><span class="special">,</span> <span class="identifier">sd95</span><span class="special">);</span> <span class="comment">// Distribution of the 'ideal better' packer.</span>
+<span class="identifier">cout</span> <span class="special"><<</span><span class="string">"Fraction of packs >= "</span> <span class="special"><<</span> <span class="identifier">under_weight</span> <span class="special"><<</span> <span class="string">" with a mean of "</span> <span class="special"><<</span> <span class="identifier">mean</span>
+ <span class="special"><<</span> <span class="string">" and standard deviation of "</span> <span class="special"><<</span> <span class="identifier">pack95</span><span class="special">.</span><span class="identifier">standard_deviation</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="string">" is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">pack95</span><span class="special">,</span> <span class="identifier">under_weight</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="comment">// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0608 is 0.95</span>
+</pre>
+<p>
+ Notice that these two deceptively simple questions (do we over-fill or
+ measure better) are actually very common. The weight of beef might be
+ replaced by a measurement of more or less anything. But the calculations
+ rely on the accuracy of the standard deviation - something that is almost
+ always less good than we might wish, especially if based on a few measurements.
+ </p>
+<h5>
+<a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.h6"></a>
+ <span class="phrase"><a name="math_toolkit.stat_tut.weg.normal_example.normal_misc.length_of_bolts"></a></span><a class="link" href="normal_misc.html#math_toolkit.stat_tut.weg.normal_example.normal_misc.length_of_bolts">Length
+ of bolts</a>
+ </h5>
+<p>
+ A bolt is usable if between 3.9 and 4.1 long. From a large batch of bolts,
+ a sample of 50 show a mean length of 3.95 with standard deviation 0.1.
+ Assuming a normal distribution, what proportion is usable? The true sample
+ mean is unknown, but we can use the sample mean and standard deviation
+ to find approximate solutions.
+ </p>
+<pre class="programlisting"> <span class="identifier">normal</span> <span class="identifier">bolts</span><span class="special">(</span><span class="number">3.95</span><span class="special">,</span> <span class="number">0.1</span><span class="special">);</span>
+ <span class="keyword">double</span> <span class="identifier">top</span> <span class="special">=</span> <span class="number">4.1</span><span class="special">;</span>
+ <span class="keyword">double</span> <span class="identifier">bottom</span> <span class="special">=</span> <span class="number">3.9</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction long enough [ P(X <= "</span> <span class="special"><<</span> <span class="identifier">top</span> <span class="special"><<</span> <span class="string">") ] is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">bolts</span><span class="special">,</span> <span class="identifier">top</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction too short [ P(X <= "</span> <span class="special"><<</span> <span class="identifier">bottom</span> <span class="special"><<</span> <span class="string">") ] is "</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">bolts</span><span class="special">,</span> <span class="identifier">bottom</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction OK -between "</span> <span class="special"><<</span> <span class="identifier">bottom</span> <span class="special"><<</span> <span class="string">" and "</span> <span class="special"><<</span> <span class="identifier">top</span>
+ <span class="special"><<</span> <span class="string">"[ P(X <= "</span> <span class="special"><<</span> <span class="identifier">top</span> <span class="special"><<</span> <span class="string">") - P(X<= "</span> <span class="special"><<</span> <span class="identifier">bottom</span> <span class="special"><<</span> <span class="string">" ) ] is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">bolts</span><span class="special">,</span> <span class="identifier">top</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">bolts</span><span class="special">,</span> <span class="identifier">bottom</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Fraction too long [ P(X > "</span> <span class="special"><<</span> <span class="identifier">top</span> <span class="special"><<</span> <span class="string">") ] is "</span>
+ <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">bolts</span><span class="special">,</span> <span class="identifier">top</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"95% of bolts are shorter than "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">bolts</span><span class="special">,</span> <span class="number">0.95</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../normal_example.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../normal_example.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../inverse_chi_squared_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Student's t Distribution Examples</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Math Toolkit">
+<link rel="up" href="../weg.html" title="Worked Examples">
+<link rel="prev" href="dist_construct_eg.html" title="Distribution Construction Examples">
+<link rel="next" href="st_eg/tut_mean_intervals.html" title="Calculating confidence intervals on the mean with the Students-t distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="dist_construct_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="st_eg/tut_mean_intervals.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_st_eg">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="math_toolkit.stat_tut.weg.st_eg"></a><a class="link" href="st_eg.html" title="Student's t Distribution Examples">Student's t Distribution
+ Examples</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="st_eg/tut_mean_intervals.html">Calculating
+ confidence intervals on the mean with the Students-t distribution</a></span></dt>
+<dt><span class="section"><a href="st_eg/tut_mean_test.html">Testing
+ a sample mean for difference from a "true" mean</a></span></dt>
+<dt><span class="section"><a href="st_eg/tut_mean_size.html">Estimating
+ how large a sample size would have to become in order to give a significant
+ Students-t test result with a single sample test</a></span></dt>
+<dt><span class="section"><a href="st_eg/two_sample_students_t.html">Comparing
+ the means of two samples with the Students-t test</a></span></dt>
+<dt><span class="section"><a href="st_eg/paired_st.html">Comparing
+ two paired samples with the Student's t distribution</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="dist_construct_eg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../weg.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="st_eg/tut_mean_intervals.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/paired_st.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/paired_st.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Comparing two paired samples with the Student's t distribution</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../st_eg.html" title="Student's t Distribution Examples">
+<link rel="prev" href="two_sample_students_t.html" title="Comparing the means of two samples with the Students-t test">
+<link rel="next" href="../cs_eg.html" title="Chi Squared Distribution Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="two_sample_students_t.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../cs_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_st_eg_paired_st">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.st_eg.paired_st"></a><a class="link" href="paired_st.html" title="Comparing two paired samples with the Student's t distribution">Comparing
+ two paired samples with the Student's t distribution</a>
+</h5></div></div></div>
+<p>
+ Imagine that we have a before and after reading for each item in the
+ sample: for example we might have measured blood pressure before and
+ after administration of a new drug. We can't pool the results and compare
+ the means before and after the change, because each patient will have
+ a different baseline reading. Instead we calculate the difference between
+ before and after measurements in each patient, and calculate the mean
+ and standard deviation of the differences. To test whether a significant
+ change has taken place, we can then test the null-hypothesis that the
+ true mean is zero using the same procedure we used in the single sample
+ cases previously discussed.
+ </p>
+<p>
+ That means we can:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="tut_mean_intervals.html" title="Calculating confidence intervals on the mean with the Students-t distribution">Calculate
+ confidence intervals of the mean</a>. If the endpoints of the
+ interval differ in sign then we are unable to reject the null-hypothesis
+ that there is no change.
+ </li>
+<li class="listitem">
+ <a class="link" href="tut_mean_test.html" title='Testing a sample mean for difference from a "true" mean'>Test
+ whether the true mean is zero</a>. If the result is consistent
+ with a true mean of zero, then we are unable to reject the null-hypothesis
+ that there is no change.
+ </li>
+<li class="listitem">
+ <a class="link" href="tut_mean_size.html" title="Estimating how large a sample size would have to become in order to give a significant Students-t test result with a single sample test">Calculate
+ how many pairs of readings we would need in order to obtain a significant
+ result</a>.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="two_sample_students_t.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="../cs_eg.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,257 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Calculating confidence intervals on the mean with the Students-t distribution</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../st_eg.html" title="Student's t Distribution Examples">
+<link rel="prev" href="../st_eg.html" title="Student's t Distribution Examples">
+<link rel="next" href="tut_mean_test.html" title='Testing a sample mean for difference from a "true" mean'>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../st_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="tut_mean_test.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_st_eg_tut_mean_intervals">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.st_eg.tut_mean_intervals"></a><a class="link" href="tut_mean_intervals.html" title="Calculating confidence intervals on the mean with the Students-t distribution">Calculating
+ confidence intervals on the mean with the Students-t distribution</a>
+</h5></div></div></div>
+<p>
+ Let's say you have a sample mean, you may wish to know what confidence
+ intervals you can place on that mean. Colloquially: "I want an interval
+ that I can be P% sure contains the true mean". (On a technical point,
+ note that the interval either contains the true mean or it does not:
+ the meaning of the confidence level is subtly different from this colloquialism.
+ More background information can be found on the <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm" target="_top">NIST
+ site</a>).
+ </p>
+<p>
+ The formula for the interval can be expressed as:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../../equations/dist_tutorial4.png"></span>
+ </p>
+<p>
+ Where, <span class="emphasis"><em>Y<sub>s</sub></em></span> is the sample mean, <span class="emphasis"><em>s</em></span>
+ is the sample standard deviation, <span class="emphasis"><em>N</em></span> is the sample
+ size, /α/ is the desired significance level and <span class="emphasis"><em>t<sub>(α/2,N-1)</sub></em></span>
+ is the upper critical value of the Students-t distribution with <span class="emphasis"><em>N-1</em></span>
+ degrees of freedom.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ The quantity α   is the maximum acceptable risk of falsely rejecting the
+ null-hypothesis. The smaller the value of α the greater the strength
+ of the test.
+ </p>
+<p>
+ The confidence level of the test is defined as 1 - α, and often expressed
+ as a percentage. So for example a significance level of 0.05, is equivalent
+ to a 95% confidence level. Refer to <a href="http://www.itl.nist.gov/div898/handbook/prc/section1/prc14.htm" target="_top">"What
+ are confidence intervals?"</a> in <a href="http://www.itl.nist.gov/div898/handbook/" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods.</a> for more information.
+ </p>
+</td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The usual assumptions of <a href="http://en.wikipedia.org/wiki/Independent_and_identically-distributed_random_variables" target="_top">independent
+ and identically distributed (i.i.d.)</a> variables and <a href="http://en.wikipedia.org/wiki/Normal_distribution" target="_top">normal
+ distribution</a> of course apply here, as they do in other examples.
+ </p></td></tr>
+</table></div>
+<p>
+ From the formula, it should be clear that:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The width of the confidence interval decreases as the sample size
+ increases.
+ </li>
+<li class="listitem">
+ The width increases as the standard deviation increases.
+ </li>
+<li class="listitem">
+ The width increases as the <span class="emphasis"><em>confidence level increases</em></span>
+ (0.5 towards 0.99999 - stronger).
+ </li>
+<li class="listitem">
+ The width increases as the <span class="emphasis"><em>significance level decreases</em></span>
+ (0.5 towards 0.00000...01 - stronger).
+ </li>
+</ul></div>
+<p>
+ The following example code is taken from the example program students_t_single_sample.cpp.
+ </p>
+<p>
+ We'll begin by defining a procedure to calculate intervals for various
+ confidence levels; the procedure will print these out as a table:
+ </p>
+<pre class="programlisting"><span class="comment">// Needed includes:</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">students_t</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+<span class="comment">// Bring everything into global namespace for ease of use:</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+
+<span class="keyword">void</span> <span class="identifier">confidence_limits_on_mean</span><span class="special">(</span>
+ <span class="keyword">double</span> <span class="identifier">Sm</span><span class="special">,</span> <span class="comment">// Sm = Sample Mean.</span>
+ <span class="keyword">double</span> <span class="identifier">Sd</span><span class="special">,</span> <span class="comment">// Sd = Sample Standard Deviation.</span>
+ <span class="keyword">unsigned</span> <span class="identifier">Sn</span><span class="special">)</span> <span class="comment">// Sn = Sample Size.</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+
+ <span class="comment">// Print out general info:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span>
+ <span class="string">"__________________________________\n"</span>
+ <span class="string">"2-Sided Confidence Limits For Mean\n"</span>
+ <span class="string">"__________________________________\n\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">7</span><span class="special">);</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Number of Observations"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">Sn</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Mean"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">Sm</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">40</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Standard Deviation"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">Sd</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+ We'll define a table of significance/risk levels for which we'll compute
+ intervals:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.25</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">,</span> <span class="number">0.00001</span> <span class="special">};</span>
+</pre>
+<p>
+ Note that these are the complements of the confidence/probability levels:
+ 0.5, 0.75, 0.9 .. 0.99999).
+ </p>
+<p>
+ Next we'll declare the distribution object we'll need, note that the
+ <span class="emphasis"><em>degrees of freedom</em></span> parameter is the sample size
+ less one:
+ </p>
+<pre class="programlisting"><span class="identifier">students_t</span> <span class="identifier">dist</span><span class="special">(</span><span class="identifier">Sn</span> <span class="special">-</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<p>
+ Most of what follows in the program is pretty printing, so let's focus
+ on the calculation of the interval. First we need the t-statistic, computed
+ using the <span class="emphasis"><em>quantile</em></span> function and our significance
+ level. Note that since the significance levels are the complement of
+ the probability, we have to wrap the arguments in a call to <span class="emphasis"><em>complement(...)</em></span>:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">T</span> <span class="special">=</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span> <span class="special">/</span> <span class="number">2</span><span class="special">));</span>
+</pre>
+<p>
+ Note that alpha was divided by two, since we'll be calculating both the
+ upper and lower bounds: had we been interested in a single sided interval
+ then we would have omitted this step.
+ </p>
+<p>
+ Now to complete the picture, we'll get the (one-sided) width of the interval
+ from the t-statistic by multiplying by the standard deviation, and dividing
+ by the square root of the sample size:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">w</span> <span class="special">=</span> <span class="identifier">T</span> <span class="special">*</span> <span class="identifier">Sd</span> <span class="special">/</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="keyword">double</span><span class="special">(</span><span class="identifier">Sn</span><span class="special">));</span>
+</pre>
+<p>
+ The two-sided interval is then the sample mean plus and minus this width.
+ </p>
+<p>
+ And apart from some more pretty-printing that completes the procedure.
+ </p>
+<p>
+ Let's take a look at some sample output, first using the <a href="http://www.itl.nist.gov/div898/handbook/eda/section4/eda428.htm" target="_top">Heat
+ flow data</a> from the NIST site. The data set was collected by Bob
+ Zarr of NIST in January, 1990 from a heat flow meter calibration and
+ stability analysis. The corresponding dataplot output for this test can
+ be found in <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm" target="_top">section
+ 3.5.2</a> of the <a href="http://www.itl.nist.gov/div898/handbook/" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods.</a>.
+ </p>
+<pre class="programlisting"> __________________________________
+ 2-Sided Confidence Limits For Mean
+ __________________________________
+
+ Number of Observations = 195
+ Mean = 9.26146
+ Standard Deviation = 0.02278881
+
+
+ ___________________________________________________________________
+ Confidence T Interval Lower Upper
+ Value (%) Value Width Limit Limit
+ ___________________________________________________________________
+ 50.000 0.676 1.103e-003 9.26036 9.26256
+ 75.000 1.154 1.883e-003 9.25958 9.26334
+ 90.000 1.653 2.697e-003 9.25876 9.26416
+ 95.000 1.972 3.219e-003 9.25824 9.26468
+ 99.000 2.601 4.245e-003 9.25721 9.26571
+ 99.900 3.341 5.453e-003 9.25601 9.26691
+ 99.990 3.973 6.484e-003 9.25498 9.26794
+ 99.999 4.537 7.404e-003 9.25406 9.26886
+</pre>
+<p>
+ As you can see the large sample size (195) and small standard deviation
+ (0.023) have combined to give very small intervals, indeed we can be
+ very confident that the true mean is 9.2.
+ </p>
+<p>
+ For comparison the next example data output is taken from <span class="emphasis"><em>P.K.Hou,
+ O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. and from Statistics
+ for Analytical Chemistry, 3rd ed. (1994), pp 54-55 J. C. Miller and J.
+ N. Miller, Ellis Horwood ISBN 0 13 0309907.</em></span> The values result
+ from the determination of mercury by cold-vapour atomic absorption.
+ </p>
+<pre class="programlisting"> __________________________________
+ 2-Sided Confidence Limits For Mean
+ __________________________________
+
+ Number of Observations = 3
+ Mean = 37.8000000
+ Standard Deviation = 0.9643650
+
+
+ ___________________________________________________________________
+ Confidence T Interval Lower Upper
+ Value (%) Value Width Limit Limit
+ ___________________________________________________________________
+ 50.000 0.816 0.455 37.34539 38.25461
+ 75.000 1.604 0.893 36.90717 38.69283
+ 90.000 2.920 1.626 36.17422 39.42578
+ 95.000 4.303 2.396 35.40438 40.19562
+ 99.000 9.925 5.526 32.27408 43.32592
+ 99.900 31.599 17.594 20.20639 55.39361
+ 99.990 99.992 55.673 -17.87346 93.47346
+ 99.999 316.225 176.067 -138.26683 213.86683
+</pre>
+<p>
+ This time the fact that there are only three measurements leads to much
+ wider intervals, indeed such large intervals that it's hard to be very
+ confident in the location of the mean.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../st_eg.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="tut_mean_test.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_size.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_size.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,169 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Estimating how large a sample size would have to become in order to give a significant Students-t test result with a single sample test</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../st_eg.html" title="Student's t Distribution Examples">
+<link rel="prev" href="tut_mean_test.html" title='Testing a sample mean for difference from a "true" mean'>
+<link rel="next" href="two_sample_students_t.html" title="Comparing the means of two samples with the Students-t test">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="tut_mean_test.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="two_sample_students_t.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_st_eg_tut_mean_size">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.st_eg.tut_mean_size"></a><a class="link" href="tut_mean_size.html" title="Estimating how large a sample size would have to become in order to give a significant Students-t test result with a single sample test">Estimating
+ how large a sample size would have to become in order to give a significant
+ Students-t test result with a single sample test</a>
+</h5></div></div></div>
+<p>
+ Imagine you have conducted a Students-t test on a single sample in order
+ to check for systematic errors in your measurements. Imagine that the
+ result is borderline. At this point one might go off and collect more
+ data, but it might be prudent to first ask the question "How much
+ more?". The parameter estimators of the students_t_distribution
+ class can provide this information.
+ </p>
+<p>
+ This section is based on the example code in students_t_single_sample.cpp
+ and we begin by defining a procedure that will print out a table of estimated
+ sample sizes for various confidence levels:
+ </p>
+<pre class="programlisting"><span class="comment">// Needed includes:</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">students_t</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+<span class="comment">// Bring everything into global namespace for ease of use:</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+
+<span class="keyword">void</span> <span class="identifier">single_sample_find_df</span><span class="special">(</span>
+ <span class="keyword">double</span> <span class="identifier">M</span><span class="special">,</span> <span class="comment">// M = true mean.</span>
+ <span class="keyword">double</span> <span class="identifier">Sm</span><span class="special">,</span> <span class="comment">// Sm = Sample Mean.</span>
+ <span class="keyword">double</span> <span class="identifier">Sd</span><span class="special">)</span> <span class="comment">// Sd = Sample Standard Deviation.</span>
+<span class="special">{</span>
+</pre>
+<p>
+ Next we define a table of significance levels:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.25</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.0001</span><span class="special">,</span> <span class="number">0.00001</span> <span class="special">};</span>
+</pre>
+<p>
+ Printing out the table of sample sizes required for various confidence
+ levels begins with the table header:
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n\n"</span>
+ <span class="string">"_______________________________________________________________\n"</span>
+ <span class="string">"Confidence Estimated Estimated\n"</span>
+ <span class="string">" Value (%) Sample Size Sample Size\n"</span>
+ <span class="string">" (one sided test) (two sided test)\n"</span>
+ <span class="string">"_______________________________________________________________\n"</span><span class="special">;</span>
+</pre>
+<p>
+ And now the important part: the sample sizes required. Class <code class="computeroutput"><span class="identifier">students_t_distribution</span></code> has a static
+ member function <code class="computeroutput"><span class="identifier">find_degrees_of_freedom</span></code>
+ that will calculate how large a sample size needs to be in order to give
+ a definitive result.
+ </p>
+<p>
+ The first argument is the difference between the means that you wish
+ to be able to detect, here it's the absolute value of the difference
+ between the sample mean, and the true mean.
+ </p>
+<p>
+ Then come two probability values: alpha and beta. Alpha is the maximum
+ acceptable risk of rejecting the null-hypothesis when it is in fact true.
+ Beta is the maximum acceptable risk of failing to reject the null-hypothesis
+ when in fact it is false. Also note that for a two-sided test, alpha
+ must be divided by 2.
+ </p>
+<p>
+ The final parameter of the function is the standard deviation of the
+ sample.
+ </p>
+<p>
+ In this example, we assume that alpha and beta are the same, and call
+ <code class="computeroutput"><span class="identifier">find_degrees_of_freedom</span></code>
+ twice: once with alpha for a one-sided test, and once with alpha/2 for
+ a two-sided test.
+ </p>
+<pre class="programlisting"> <span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// Confidence value:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="number">100</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span><span class="special">-</span><span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+ <span class="comment">// calculate df for single sided test:</span>
+ <span class="keyword">double</span> <span class="identifier">df</span> <span class="special">=</span> <span class="identifier">students_t</span><span class="special">::</span><span class="identifier">find_degrees_of_freedom</span><span class="special">(</span>
+ <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">M</span> <span class="special">-</span> <span class="identifier">Sm</span><span class="special">),</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">Sd</span><span class="special">);</span>
+ <span class="comment">// convert to sample size:</span>
+ <span class="keyword">double</span> <span class="identifier">size</span> <span class="special">=</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">df</span><span class="special">)</span> <span class="special">+</span> <span class="number">1</span><span class="special">;</span>
+ <span class="comment">// Print size:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">16</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">size</span><span class="special">;</span>
+ <span class="comment">// calculate df for two sided test:</span>
+ <span class="identifier">df</span> <span class="special">=</span> <span class="identifier">students_t</span><span class="special">::</span><span class="identifier">find_degrees_of_freedom</span><span class="special">(</span>
+ <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">M</span> <span class="special">-</span> <span class="identifier">Sm</span><span class="special">),</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">]/</span><span class="number">2</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">Sd</span><span class="special">);</span>
+ <span class="comment">// convert to sample size:</span>
+ <span class="identifier">size</span> <span class="special">=</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">df</span><span class="special">)</span> <span class="special">+</span> <span class="number">1</span><span class="special">;</span>
+ <span class="comment">// Print size:</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fixed</span> <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">16</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">right</span> <span class="special"><<</span> <span class="identifier">size</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Let's now look at some sample output using data taken from <span class="emphasis"><em>P.K.Hou,
+ O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. and from Statistics
+ for Analytical Chemistry, 3rd ed. (1994), pp 54-55 J. C. Miller and J.
+ N. Miller, Ellis Horwood ISBN 0 13 0309907.</em></span> The values result
+ from the determination of mercury by cold-vapour atomic absorption.
+ </p>
+<p>
+ Only three measurements were made, and the Students-t test above gave
+ a borderline result, so this example will show us how many samples would
+ need to be collected:
+ </p>
+<pre class="programlisting">_____________________________________________________________
+Estimated sample sizes required for various confidence levels
+_____________________________________________________________
+
+True Mean = 38.90000
+Sample Mean = 37.80000
+Sample Standard Deviation = 0.96437
+
+
+_______________________________________________________________
+Confidence Estimated Estimated
+ Value (%) Sample Size Sample Size
+ (one sided test) (two sided test)
+_______________________________________________________________
+ 75.000 3 4
+ 90.000 7 9
+ 95.000 11 13
+ 99.000 20 22
+ 99.900 35 37
+ 99.990 50 53
+ 99.999 66 68
+</pre>
+<p>
+ So in this case, many more measurements would have had to be made, for
+ example at the 95% level, 14 measurements in total for a two-sided test.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="tut_mean_test.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="two_sample_students_t.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_test.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_test.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,324 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Testing a sample mean for difference from a "true" mean</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../st_eg.html" title="Student's t Distribution Examples">
+<link rel="prev" href="tut_mean_intervals.html" title="Calculating confidence intervals on the mean with the Students-t distribution">
+<link rel="next" href="tut_mean_size.html" title="Estimating how large a sample size would have to become in order to give a significant Students-t test result with a single sample test">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="tut_mean_intervals.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="tut_mean_size.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_st_eg_tut_mean_test">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.st_eg.tut_mean_test"></a><a class="link" href="tut_mean_test.html" title='Testing a sample mean for difference from a "true" mean'>Testing
+ a sample mean for difference from a "true" mean</a>
+</h5></div></div></div>
+<p>
+ When calibrating or comparing a scientific instrument or measurement
+ method of some kind, we want to be answer the question "Does an
+ observed sample mean differ from the "true" mean in any significant
+ way?". If it does, then we have evidence of a systematic difference.
+ This question can be answered with a Students-t test: more information
+ can be found <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm" target="_top">on
+ the NIST site</a>.
+ </p>
+<p>
+ Of course, the assignment of "true" to one mean may be quite
+ arbitrary, often this is simply a "traditional" method of measurement.
+ </p>
+<p>
+ The following example code is taken from the example program students_t_single_sample.cpp.
+ </p>
+<p>
+ We'll begin by defining a procedure to determine which of the possible
+ hypothesis are rejected or not-rejected at a given significance level:
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Non-statisticians might say 'not-rejected' means 'accepted', (often
+ of the null-hypothesis) implying, wrongly, that there really <span class="bold"><strong>IS</strong></span> no difference, but statisticans eschew this
+ to avoid implying that there is positive evidence of 'no difference'.
+ 'Not-rejected' here means there is <span class="bold"><strong>no evidence</strong></span>
+ of difference, but there still might well be a difference. For example,
+ see <a href="http://en.wikipedia.org/wiki/Argument_from_ignorance" target="_top">argument
+ from ignorance</a> and <a href="http://www.bmj.com/cgi/content/full/311/7003/485" target="_top">Absence
+ of evidence does not constitute evidence of absence.</a>
+ </p></td></tr>
+</table></div>
+<pre class="programlisting"><span class="comment">// Needed includes:</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">students_t</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+<span class="comment">// Bring everything into global namespace for ease of use:</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+
+<span class="keyword">void</span> <span class="identifier">single_sample_t_test</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">M</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">Sm</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">Sd</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">Sn</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">//</span>
+ <span class="comment">// M = true mean.</span>
+ <span class="comment">// Sm = Sample Mean.</span>
+ <span class="comment">// Sd = Sample Standard Deviation.</span>
+ <span class="comment">// Sn = Sample Size.</span>
+ <span class="comment">// alpha = Significance Level.</span>
+</pre>
+<p>
+ Most of the procedure is pretty-printing, so let's just focus on the
+ calculation, we begin by calculating the t-statistic:
+ </p>
+<pre class="programlisting"><span class="comment">// Difference in means:</span>
+<span class="keyword">double</span> <span class="identifier">diff</span> <span class="special">=</span> <span class="identifier">Sm</span> <span class="special">-</span> <span class="identifier">M</span><span class="special">;</span>
+<span class="comment">// Degrees of freedom:</span>
+<span class="keyword">unsigned</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">Sn</span> <span class="special">-</span> <span class="number">1</span><span class="special">;</span>
+<span class="comment">// t-statistic:</span>
+<span class="keyword">double</span> <span class="identifier">t_stat</span> <span class="special">=</span> <span class="identifier">diff</span> <span class="special">*</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="keyword">double</span><span class="special">(</span><span class="identifier">Sn</span><span class="special">))</span> <span class="special">/</span> <span class="identifier">Sd</span><span class="special">;</span>
+</pre>
+<p>
+ Finally calculate the probability from the t-statistic. If we're interested
+ in simply whether there is a difference (either less or greater) or not,
+ we don't care about the sign of the t-statistic, and we take the complement
+ of the probability for comparison to the significance level:
+ </p>
+<pre class="programlisting"><span class="identifier">students_t</span> <span class="identifier">dist</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">q</span> <span class="special">=</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">t_stat</span><span class="special">)));</span>
+</pre>
+<p>
+ The procedure then prints out the results of the various tests that can
+ be done, these can be summarised in the following table:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Hypothesis
+ </p>
+ </th>
+<th>
+ <p>
+ Test
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ The Null-hypothesis: there is <span class="bold"><strong>no difference</strong></span>
+ in means
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if complement of CDF for |t| < significance level
+ / 2:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span>
+ <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">t</span><span class="special">)))</span>
+ <span class="special"><</span> <span class="identifier">alpha</span>
+ <span class="special">/</span> <span class="number">2</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The Alternative-hypothesis: there <span class="bold"><strong>is
+ difference</strong></span> in means
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if complement of CDF for |t| > significance level
+ / 2:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span>
+ <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">t</span><span class="special">)))</span>
+ <span class="special">></span> <span class="identifier">alpha</span>
+ <span class="special">/</span> <span class="number">2</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The Alternative-hypothesis: the sample mean <span class="bold"><strong>is
+ less</strong></span> than the true mean.
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if CDF of t > significance level:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span>
+ <span class="identifier">t</span><span class="special">)</span>
+ <span class="special">></span> <span class="identifier">alpha</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The Alternative-hypothesis: the sample mean <span class="bold"><strong>is
+ greater</strong></span> than the true mean.
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if complement of CDF of t > significance level:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span>
+ <span class="identifier">t</span><span class="special">))</span>
+ <span class="special">></span> <span class="identifier">alpha</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Notice that the comparisons are against <code class="computeroutput"><span class="identifier">alpha</span>
+ <span class="special">/</span> <span class="number">2</span></code>
+ for a two-sided test and against <code class="computeroutput"><span class="identifier">alpha</span></code>
+ for a one-sided test
+ </p></td></tr>
+</table></div>
+<p>
+ Now that we have all the parts in place, let's take a look at some sample
+ output, first using the <a href="http://www.itl.nist.gov/div898/handbook/eda/section4/eda428.htm" target="_top">Heat
+ flow data</a> from the NIST site. The data set was collected by Bob
+ Zarr of NIST in January, 1990 from a heat flow meter calibration and
+ stability analysis. The corresponding dataplot output for this test can
+ be found in <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm" target="_top">section
+ 3.5.2</a> of the <a href="http://www.itl.nist.gov/div898/handbook/" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods.</a>.
+ </p>
+<pre class="programlisting"> __________________________________
+ Student t test for a single sample
+ __________________________________
+
+ Number of Observations = 195
+ Sample Mean = 9.26146
+ Sample Standard Deviation = 0.02279
+ Expected True Mean = 5.00000
+
+ Sample Mean - Expected Test Mean = 4.26146
+ Degrees of Freedom = 194
+ T Statistic = 2611.28380
+ Probability that difference is due to chance = 0.000e+000
+
+ Results for Alternative Hypothesis and alpha = 0.0500
+
+ Alternative Hypothesis Conclusion
+ Mean != 5.000 NOT REJECTED
+ Mean < 5.000 REJECTED
+ Mean > 5.000 NOT REJECTED
+</pre>
+<p>
+ You will note the line that says the probability that the difference
+ is due to chance is zero. From a philosophical point of view, of course,
+ the probability can never reach zero. However, in this case the calculated
+ probability is smaller than the smallest representable double precision
+ number, hence the appearance of a zero here. Whatever its "true"
+ value is, we know it must be extraordinarily small, so the alternative
+ hypothesis - that there is a difference in means - is not rejected.
+ </p>
+<p>
+ For comparison the next example data output is taken from <span class="emphasis"><em>P.K.Hou,
+ O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. and from Statistics
+ for Analytical Chemistry, 3rd ed. (1994), pp 54-55 J. C. Miller and J.
+ N. Miller, Ellis Horwood ISBN 0 13 0309907.</em></span> The values result
+ from the determination of mercury by cold-vapour atomic absorption.
+ </p>
+<pre class="programlisting"> __________________________________
+ Student t test for a single sample
+ __________________________________
+
+ Number of Observations = 3
+ Sample Mean = 37.80000
+ Sample Standard Deviation = 0.96437
+ Expected True Mean = 38.90000
+
+ Sample Mean - Expected Test Mean = -1.10000
+ Degrees of Freedom = 2
+ T Statistic = -1.97566
+ Probability that difference is due to chance = 1.869e-001
+
+ Results for Alternative Hypothesis and alpha = 0.0500
+
+ Alternative Hypothesis Conclusion
+ Mean != 38.900 REJECTED
+ Mean < 38.900 REJECTED
+ Mean > 38.900 REJECTED
+</pre>
+<p>
+ As you can see the small number of measurements (3) has led to a large
+ uncertainty in the location of the true mean. So even though there appears
+ to be a difference between the sample mean and the expected true mean,
+ we conclude that there is no significant difference, and are unable to
+ reject the null hypothesis. However, if we were to lower the bar for
+ acceptance down to alpha = 0.1 (a 90% confidence level) we see a different
+ output:
+ </p>
+<pre class="programlisting">__________________________________
+Student t test for a single sample
+__________________________________
+
+Number of Observations = 3
+Sample Mean = 37.80000
+Sample Standard Deviation = 0.96437
+Expected True Mean = 38.90000
+
+Sample Mean - Expected Test Mean = -1.10000
+Degrees of Freedom = 2
+T Statistic = -1.97566
+Probability that difference is due to chance = 1.869e-001
+
+Results for Alternative Hypothesis and alpha = 0.1000
+
+Alternative Hypothesis Conclusion
+Mean != 38.900 REJECTED
+Mean < 38.900 NOT REJECTED
+Mean > 38.900 REJECTED
+</pre>
+<p>
+ In this case, we really have a borderline result, and more data (and/or
+ more accurate data), is needed for a more convincing conclusion.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="tut_mean_intervals.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="tut_mean_size.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/two_sample_students_t.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/stat_tut/weg/st_eg/two_sample_students_t.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,349 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Comparing the means of two samples with the Students-t test</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Math Toolkit">
+<link rel="up" href="../st_eg.html" title="Student's t Distribution Examples">
+<link rel="prev" href="tut_mean_size.html" title="Estimating how large a sample size would have to become in order to give a significant Students-t test result with a single sample test">
+<link rel="next" href="paired_st.html" title="Comparing two paired samples with the Student's t distribution">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="tut_mean_size.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="paired_st.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_stat_tut_weg_st_eg_two_sample_students_t">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="math_toolkit.stat_tut.weg.st_eg.two_sample_students_t"></a><a class="link" href="two_sample_students_t.html" title="Comparing the means of two samples with the Students-t test">Comparing
+ the means of two samples with the Students-t test</a>
+</h5></div></div></div>
+<p>
+ Imagine that we have two samples, and we wish to determine whether their
+ means are different or not. This situation often arises when determining
+ whether a new process or treatment is better than an old one.
+ </p>
+<p>
+ In this example, we'll be using the <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3531.htm" target="_top">Car
+ Mileage sample data</a> from the <a href="http://www.itl.nist.gov" target="_top">NIST
+ website</a>. The data compares miles per gallon of US cars with miles
+ per gallon of Japanese cars.
+ </p>
+<p>
+ The sample code is in students_t_two_samples.cpp.
+ </p>
+<p>
+ There are two ways in which this test can be conducted: we can assume
+ that the true standard deviations of the two samples are equal or not.
+ If the standard deviations are assumed to be equal, then the calculation
+ of the t-statistic is greatly simplified, so we'll examine that case
+ first. In real life we should verify whether this assumption is valid
+ with a Chi-Squared test for equal variances.
+ </p>
+<p>
+ We begin by defining a procedure that will conduct our test assuming
+ equal variances:
+ </p>
+<pre class="programlisting"><span class="comment">// Needed headers:</span>
+<span class="preprocessor">#include</span> <span class="special"><</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">students_t</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span>
+<span class="comment">// Simplify usage:</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+
+<span class="keyword">void</span> <span class="identifier">two_samples_t_test_equal_sd</span><span class="special">(</span>
+ <span class="keyword">double</span> <span class="identifier">Sm1</span><span class="special">,</span> <span class="comment">// Sm1 = Sample 1 Mean.</span>
+ <span class="keyword">double</span> <span class="identifier">Sd1</span><span class="special">,</span> <span class="comment">// Sd1 = Sample 1 Standard Deviation.</span>
+ <span class="keyword">unsigned</span> <span class="identifier">Sn1</span><span class="special">,</span> <span class="comment">// Sn1 = Sample 1 Size.</span>
+ <span class="keyword">double</span> <span class="identifier">Sm2</span><span class="special">,</span> <span class="comment">// Sm2 = Sample 2 Mean.</span>
+ <span class="keyword">double</span> <span class="identifier">Sd2</span><span class="special">,</span> <span class="comment">// Sd2 = Sample 2 Standard Deviation.</span>
+ <span class="keyword">unsigned</span> <span class="identifier">Sn2</span><span class="special">,</span> <span class="comment">// Sn2 = Sample 2 Size.</span>
+ <span class="keyword">double</span> <span class="identifier">alpha</span><span class="special">)</span> <span class="comment">// alpha = Significance Level.</span>
+<span class="special">{</span>
+</pre>
+<p>
+ Our procedure will begin by calculating the t-statistic, assuming equal
+ variances the needed formulae are:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../../equations/dist_tutorial1.png"></span>
+ </p>
+<p>
+ where Sp is the "pooled" standard deviation of the two samples,
+ and <span class="emphasis"><em>v</em></span> is the number of degrees of freedom of the
+ two combined samples. We can now write the code to calculate the t-statistic:
+ </p>
+<pre class="programlisting"><span class="comment">// Degrees of freedom:</span>
+<span class="keyword">double</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">Sn1</span> <span class="special">+</span> <span class="identifier">Sn2</span> <span class="special">-</span> <span class="number">2</span><span class="special">;</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Degrees of Freedom"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">v</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="comment">// Pooled variance:</span>
+<span class="keyword">double</span> <span class="identifier">sp</span> <span class="special">=</span> <span class="identifier">sqrt</span><span class="special">(((</span><span class="identifier">Sn1</span><span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">Sd1</span> <span class="special">*</span> <span class="identifier">Sd1</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">Sn2</span><span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">Sd2</span> <span class="special">*</span> <span class="identifier">Sd2</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">v</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Pooled Standard Deviation"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">sp</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="comment">// t-statistic:</span>
+<span class="keyword">double</span> <span class="identifier">t_stat</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">Sm1</span> <span class="special">-</span> <span class="identifier">Sm2</span><span class="special">)</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">sp</span> <span class="special">*</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="number">1.0</span> <span class="special">/</span> <span class="identifier">Sn1</span> <span class="special">+</span> <span class="number">1.0</span> <span class="special">/</span> <span class="identifier">Sn2</span><span class="special">));</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"T Statistic"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">t_stat</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+ The next step is to define our distribution object, and calculate the
+ complement of the probability:
+ </p>
+<pre class="programlisting"><span class="identifier">students_t</span> <span class="identifier">dist</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">q</span> <span class="special">=</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span> <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">t_stat</span><span class="special">)));</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Probability that difference is due to chance"</span> <span class="special"><<</span> <span class="string">"= "</span>
+ <span class="special"><<</span> <span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">scientific</span> <span class="special"><<</span> <span class="number">2</span> <span class="special">*</span> <span class="identifier">q</span> <span class="special"><<</span> <span class="string">"\n\n"</span><span class="special">;</span>
+</pre>
+<p>
+ Here we've used the absolute value of the t-statistic, because we initially
+ want to know simply whether there is a difference or not (a two-sided
+ test). However, we can also test whether the mean of the second sample
+ is greater or is less (one-sided test) than that of the first: all the
+ possible tests are summed up in the following table:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Hypothesis
+ </p>
+ </th>
+<th>
+ <p>
+ Test
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ The Null-hypothesis: there is <span class="bold"><strong>no difference</strong></span>
+ in means
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if complement of CDF for |t| < significance level
+ / 2:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span>
+ <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">t</span><span class="special">)))</span>
+ <span class="special"><</span> <span class="identifier">alpha</span>
+ <span class="special">/</span> <span class="number">2</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The Alternative-hypothesis: there is a <span class="bold"><strong>difference</strong></span>
+ in means
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if complement of CDF for |t| > significance level
+ / 2:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span>
+ <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">t</span><span class="special">)))</span>
+ <span class="special"><</span> <span class="identifier">alpha</span>
+ <span class="special">/</span> <span class="number">2</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The Alternative-hypothesis: Sample 1 Mean is <span class="bold"><strong>less</strong></span>
+ than Sample 2 Mean.
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if CDF of t > significance level:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span>
+ <span class="identifier">t</span><span class="special">)</span>
+ <span class="special">></span> <span class="identifier">alpha</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ The Alternative-hypothesis: Sample 1 Mean is <span class="bold"><strong>greater</strong></span>
+ than Sample 2 Mean.
+ </p>
+ </td>
+<td>
+ <p>
+ Reject if complement of CDF of t > significance level:
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">dist</span><span class="special">,</span>
+ <span class="identifier">t</span><span class="special">))</span>
+ <span class="special">></span> <span class="identifier">alpha</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ For a two-sided test we must compare against alpha / 2 and not alpha.
+ </p></td></tr>
+</table></div>
+<p>
+ Most of the rest of the sample program is pretty-printing, so we'll skip
+ over that, and take a look at the sample output for alpha=0.05 (a 95%
+ probability level). For comparison the dataplot output for the same data
+ is in <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda353.htm" target="_top">section
+ 1.3.5.3</a> of the <a href="http://www.itl.nist.gov/div898/handbook/" target="_top">NIST/SEMATECH
+ e-Handbook of Statistical Methods.</a>.
+ </p>
+<pre class="programlisting"> ________________________________________________
+ Student t test for two samples (equal variances)
+ ________________________________________________
+
+ Number of Observations (Sample 1) = 249
+ Sample 1 Mean = 20.145
+ Sample 1 Standard Deviation = 6.4147
+ Number of Observations (Sample 2) = 79
+ Sample 2 Mean = 30.481
+ Sample 2 Standard Deviation = 6.1077
+ Degrees of Freedom = 326
+ Pooled Standard Deviation = 6.3426
+ T Statistic = -12.621
+ Probability that difference is due to chance = 5.273e-030
+
+ Results for Alternative Hypothesis and alpha = 0.0500
+
+ Alternative Hypothesis Conclusion
+ Sample 1 Mean != Sample 2 Mean NOT REJECTED
+ Sample 1 Mean < Sample 2 Mean NOT REJECTED
+ Sample 1 Mean > Sample 2 Mean REJECTED
+</pre>
+<p>
+ So with a probability that the difference is due to chance of just 5.273e-030,
+ we can safely conclude that there is indeed a difference.
+ </p>
+<p>
+ The tests on the alternative hypothesis show that we must also reject
+ the hypothesis that Sample 1 Mean is greater than that for Sample 2:
+ in this case Sample 1 represents the miles per gallon for Japanese cars,
+ and Sample 2 the miles per gallon for US cars, so we conclude that Japanese
+ cars are on average more fuel efficient.
+ </p>
+<p>
+ Now that we have the simple case out of the way, let's look for a moment
+ at the more complex one: that the standard deviations of the two samples
+ are not equal. In this case the formula for the t-statistic becomes:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../../equations/dist_tutorial2.png"></span>
+ </p>
+<p>
+ And for the combined degrees of freedom we use the Welch-Satterthwaite
+ approximation:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../../equations/dist_tutorial3.png"></span>
+ </p>
+<p>
+ Note that this is one of the rare situations where the degrees-of-freedom
+ parameter to the Student's t distribution is a real number, and not an
+ integer value.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Some statistical packages truncate the effective degrees of freedom
+ to an integer value: this may be necessary if you are relying on lookup
+ tables, but since our code fully supports non-integer degrees of freedom
+ there is no need to truncate in this case. Also note that when the
+ degrees of freedom is small then the Welch-Satterthwaite approximation
+ may be a significant source of error.
+ </p></td></tr>
+</table></div>
+<p>
+ Putting these formulae into code we get:
+ </p>
+<pre class="programlisting"><span class="comment">// Degrees of freedom:</span>
+<span class="keyword">double</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">Sd1</span> <span class="special">*</span> <span class="identifier">Sd1</span> <span class="special">/</span> <span class="identifier">Sn1</span> <span class="special">+</span> <span class="identifier">Sd2</span> <span class="special">*</span> <span class="identifier">Sd2</span> <span class="special">/</span> <span class="identifier">Sn2</span><span class="special">;</span>
+<span class="identifier">v</span> <span class="special">*=</span> <span class="identifier">v</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">t1</span> <span class="special">=</span> <span class="identifier">Sd1</span> <span class="special">*</span> <span class="identifier">Sd1</span> <span class="special">/</span> <span class="identifier">Sn1</span><span class="special">;</span>
+<span class="identifier">t1</span> <span class="special">*=</span> <span class="identifier">t1</span><span class="special">;</span>
+<span class="identifier">t1</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">Sn1</span> <span class="special">-</span> <span class="number">1</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">t2</span> <span class="special">=</span> <span class="identifier">Sd2</span> <span class="special">*</span> <span class="identifier">Sd2</span> <span class="special">/</span> <span class="identifier">Sn2</span><span class="special">;</span>
+<span class="identifier">t2</span> <span class="special">*=</span> <span class="identifier">t2</span><span class="special">;</span>
+<span class="identifier">t2</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">Sn2</span> <span class="special">-</span> <span class="number">1</span><span class="special">);</span>
+<span class="identifier">v</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">t1</span> <span class="special">+</span> <span class="identifier">t2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"Degrees of Freedom"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">v</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+<span class="comment">// t-statistic:</span>
+<span class="keyword">double</span> <span class="identifier">t_stat</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">Sm1</span> <span class="special">-</span> <span class="identifier">Sm2</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">Sd1</span> <span class="special">*</span> <span class="identifier">Sd1</span> <span class="special">/</span> <span class="identifier">Sn1</span> <span class="special">+</span> <span class="identifier">Sd2</span> <span class="special">*</span> <span class="identifier">Sd2</span> <span class="special">/</span> <span class="identifier">Sn2</span><span class="special">);</span>
+<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">55</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="string">"T Statistic"</span> <span class="special"><<</span> <span class="string">"= "</span> <span class="special"><<</span> <span class="identifier">t_stat</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+ Thereafter the code and the tests are performed the same as before. Using
+ are car mileage data again, here's what the output looks like:
+ </p>
+<pre class="programlisting"> __________________________________________________
+ Student t test for two samples (unequal variances)
+ __________________________________________________
+
+ Number of Observations (Sample 1) = 249
+ Sample 1 Mean = 20.145
+ Sample 1 Standard Deviation = 6.4147
+ Number of Observations (Sample 2) = 79
+ Sample 2 Mean = 30.481
+ Sample 2 Standard Deviation = 6.1077
+ Degrees of Freedom = 136.87
+ T Statistic = -12.946
+ Probability that difference is due to chance = 1.571e-025
+
+ Results for Alternative Hypothesis and alpha = 0.0500
+
+ Alternative Hypothesis Conclusion
+ Sample 1 Mean != Sample 2 Mean NOT REJECTED
+ Sample 1 Mean < Sample 2 Mean NOT REJECTED
+ Sample 1 Mean > Sample 2 Mean REJECTED
+</pre>
+<p>
+ This time allowing the variances in the two samples to differ has yielded
+ a higher likelihood that the observed difference is down to chance alone
+ (1.571e-025 compared to 5.273e-030 when equal variances were assumed).
+ However, the conclusion remains the same: US cars are less fuel efficient
+ than Japanese models.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="tut_mean_size.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../st_eg.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="paired_st.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/synopsis.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/synopsis.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Synopsis</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../gcd_lcm.html" title="Chapter 10. Integer Utilities (Greatest Common Divisor and Least Common Multiple)">
+<link rel="prev" href="introduction.html" title="Introduction">
+<link rel="next" href="gcd_function_object.html" title="GCD Function Object">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="gcd_function_object.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_synopsis">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.synopsis"></a><a class="link" href="synopsis.html" title="Synopsis">Synopsis</a>
+</h2></div></div></div>
+<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"><</span> <span class="keyword">typename</span> <span class="identifier">IntegerType</span> <span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">gcd_evaluator</span><span class="special">;</span>
+<span class="keyword">template</span> <span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">IntegerType</span> <span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">lcm_evaluator</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">IntegerType</span> <span class="special">></span>
+ <span class="identifier">IntegerType</span> <span class="identifier">gcd</span><span class="special">(</span> <span class="identifier">IntegerType</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">IntegerType</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">b</span> <span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">IntegerType</span> <span class="special">></span>
+ <span class="identifier">IntegerType</span> <span class="identifier">lcm</span><span class="special">(</span> <span class="identifier">IntegerType</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">IntegerType</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">b</span> <span class="special">);</span>
+
+<span class="keyword">typedef</span> <span class="emphasis"><em>see-below</em></span> <span class="identifier">static_gcd_type</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span> <span class="identifier">static_gcd_type</span> <span class="identifier">Value1</span><span class="special">,</span> <span class="identifier">static_gcd_type</span> <span class="identifier">Value2</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">static_gcd</span><span class="special">;</span>
+<span class="keyword">template</span> <span class="special"><</span> <span class="identifier">static_gcd_type</span> <span class="identifier">Value1</span><span class="special">,</span> <span class="identifier">static_gcd_type</span> <span class="identifier">Value2</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">static_lcm</span><span class="special">;</span>
+
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="introduction.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../gcd_lcm.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="gcd_function_object.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/threads.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/threads.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Thread Safety</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../overview.html" title="Chapter 1. Overview">
+<link rel="prev" href="intro_pol_overview.html" title="Policies">
+<link rel="next" href="perf_over1.html" title="Performance">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="intro_pol_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="perf_over1.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_threads">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.threads"></a><a class="link" href="threads.html" title="Thread Safety">Thread Safety</a>
+</h2></div></div></div>
+<p>
+ The library is fully thread safe and re-entrant for all functions regards of
+ the data type they are instantiated on. Thread safety limitations relating
+ to user defined types present in previous releases (prior to 1.50.0) have been
+ removed.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="intro_pol_overview.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="perf_over1.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/tr1_ref.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/tr1_ref.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,528 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>TR1 C Functions Quick Reference</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../extern_c.html" title='Chapter 5. TR1 and C99 external "C" Functions'>
+<link rel="prev" href="c99.html" title="C99 C Functions">
+<link rel="next" href="../constants.html" title="Chapter 6. Mathematical Constants">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="c99.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../extern_c.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../constants.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_tr1_ref">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.tr1_ref"></a><a class="link" href="tr1_ref.html" title="TR1 C Functions Quick Reference">TR1 C Functions Quick Reference</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.tr1_ref.h0"></a>
+ <span class="phrase"><a name="math_toolkit.tr1_ref.supported_tr1_functions"></a></span><a class="link" href="tr1_ref.html#math_toolkit.tr1_ref.supported_tr1_functions">Supported
+ TR1 Functions</a>
+ </h5>
+<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">namespace</span> <span class="identifier">tr1</span><span class="special">{</span> <span class="keyword">extern</span> <span class="string">"C"</span><span class="special">{</span>
+
+<span class="comment">// [5.2.1.1] associated Laguerre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">assoc_laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">assoc_laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.2] associated Legendre functions:</span>
+<span class="keyword">double</span> <span class="identifier">assoc_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">assoc_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.3] beta function:</span>
+<span class="keyword">double</span> <span class="identifier">beta</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">betaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">betal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.4] (complete) elliptic integral of the first kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.5] (complete) elliptic integral of the second kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.6] (complete) elliptic integral of the third kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.8] regular modified cylindrical Bessel functions:</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_i</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_if</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_il</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.9] cylindrical Bessel functions (of the first kind):</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_jf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_jl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.10] irregular modified cylindrical Bessel functions:</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_k</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_kf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_kl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.11] cylindrical Neumann functions;</span>
+<span class="comment">// cylindrical Bessel functions (of the second kind):</span>
+<span class="keyword">double</span> <span class="identifier">cyl_neumann</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_neumannf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_neumannl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.12] (incomplete) elliptic integral of the first kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.13] (incomplete) elliptic integral of the second kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.14] (incomplete) elliptic integral of the third kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.15] exponential integral:</span>
+<span class="keyword">double</span> <span class="identifier">expint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">expintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.16] Hermite polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">hermite</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hermitef</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hermitel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.18] Laguerre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.19] Legendre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.20] Riemann zeta function:</span>
+<span class="keyword">double</span> <span class="identifier">riemann_zeta</span><span class="special">(</span><span class="keyword">double</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">riemann_zetaf</span><span class="special">(</span><span class="keyword">float</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">riemann_zetal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.21] spherical Bessel functions (of the first kind):</span>
+<span class="keyword">double</span> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_besself</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_bessell</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.22] spherical associated Legendre functions:</span>
+<span class="keyword">double</span> <span class="identifier">sph_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">theta</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.23] spherical Neumann functions;</span>
+<span class="comment">// spherical Bessel functions (of the second kind):</span>
+<span class="keyword">double</span> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_neumannf</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_neumannl</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="special">}}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ In addition sufficient additional overloads of the <code class="computeroutput"><span class="keyword">double</span></code>
+ versions of the above functions are provided, so that calling the function
+ with any mixture of <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code>, <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>, or <span class="emphasis"><em>integer</em></span>
+ arguments is supported, with the return type determined by the <a class="link" href="result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>.
+ </p>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">expintf</span><span class="special">(</span><span class="number">2.0f</span><span class="special">);</span> <span class="comment">// float version, returns float.</span>
+<span class="identifier">expint</span><span class="special">(</span><span class="number">2.0f</span><span class="special">);</span> <span class="comment">// also calls the float version and returns float.</span>
+<span class="identifier">expint</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span> <span class="comment">// double version, returns double.</span>
+<span class="identifier">expintl</span><span class="special">(</span><span class="number">2.0L</span><span class="special">);</span> <span class="comment">// long double version, returns a long double.</span>
+<span class="identifier">expint</span><span class="special">(</span><span class="number">2.0L</span><span class="special">);</span> <span class="comment">// also calls the long double version.</span>
+<span class="identifier">expint</span><span class="special">(</span><span class="number">2</span><span class="special">);</span> <span class="comment">// integer argument is treated as a double, returns double.</span>
+</pre>
+<h5>
+<a name="math_toolkit.tr1_ref.h1"></a>
+ <span class="phrase"><a name="math_toolkit.tr1_ref.quick_reference"></a></span><a class="link" href="tr1_ref.html#math_toolkit.tr1_ref.quick_reference">Quick
+ Reference</a>
+ </h5>
+<pre class="programlisting"><span class="comment">// [5.2.1.1] associated Laguerre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">assoc_laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">assoc_laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ The assoc_laguerre functions return:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/laguerre_1.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_poly/laguerre.html" title="Laguerre (and Associated) Polynomials">laguerre</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.2] associated Legendre functions:</span>
+<span class="keyword">double</span> <span class="identifier">assoc_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">assoc_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ The assoc_legendre functions return:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/legendre_1b.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_poly/legendre.html" title="Legendre (and Associated) Polynomials">legendre_p</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.3] beta function:</span>
+<span class="keyword">double</span> <span class="identifier">beta</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">betaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">betal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the beta function of <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>y</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/beta1.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_beta/beta_function.html" title="Beta">beta</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.4] (complete) elliptic integral of the first kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the complete elliptic integral of the first kind of <span class="emphasis"><em>k</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/ellint6.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="ellint/ellint_1.html" title="Elliptic Integrals of the First Kind - Legendre Form">ellint_1</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.5] (complete) elliptic integral of the second kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the complete elliptic integral of the second kind of <span class="emphasis"><em>k</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/ellint7.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="ellint/ellint_2.html" title="Elliptic Integrals of the Second Kind - Legendre Form">ellint_2</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.6] (complete) elliptic integral of the third kind:</span>
+<span class="keyword">double</span> <span class="identifier">comp_ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">comp_ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the complete elliptic integral of the third kind of <span class="emphasis"><em>k</em></span>
+ and <span class="emphasis"><em>nu</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/ellint8.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="ellint/ellint_3.html" title="Elliptic Integrals of the Third Kind - Legendre Form">ellint_3</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.8] regular modified cylindrical Bessel functions:</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_i</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_if</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_il</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the modified bessel function of the first kind of <span class="emphasis"><em>nu</em></span>
+ and <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/mbessel2.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.9] cylindrical Bessel functions (of the first kind):</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_jf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_jl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the bessel function of the first kind of <span class="emphasis"><em>nu</em></span> and
+ <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/bessel2.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
+ for the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.10] irregular modified cylindrical Bessel functions:</span>
+<span class="keyword">double</span> <span class="identifier">cyl_bessel_k</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_bessel_kf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_kl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the modified bessel function of the second kind of <span class="emphasis"><em>nu</em></span>
+ and <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/mbessel3.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="bessel/mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_k</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.11] cylindrical Neumann functions;</span>
+<span class="comment">// cylindrical Bessel functions (of the second kind):</span>
+<span class="keyword">double</span> <span class="identifier">cyl_neumann</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">cyl_neumannf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_neumannl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the bessel function of the second kind (Neumann function) of <span class="emphasis"><em>nu</em></span>
+ and <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/bessel3.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="bessel/bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>
+ for the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.12] (incomplete) elliptic integral of the first kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the incomplete elliptic integral of the first kind of <span class="emphasis"><em>k</em></span>
+ and <span class="emphasis"><em>phi</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/ellint2.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="ellint/ellint_1.html" title="Elliptic Integrals of the First Kind - Legendre Form">ellint_1</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.13] (incomplete) elliptic integral of the second kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the incomplete elliptic integral of the second kind of <span class="emphasis"><em>k</em></span>
+ and <span class="emphasis"><em>phi</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/ellint3.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="ellint/ellint_2.html" title="Elliptic Integrals of the Second Kind - Legendre Form">ellint_2</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.14] (incomplete) elliptic integral of the third kind:</span>
+<span class="keyword">double</span> <span class="identifier">ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the incomplete elliptic integral of the third kind of <span class="emphasis"><em>k</em></span>,
+ <span class="emphasis"><em>nu</em></span> and <span class="emphasis"><em>phi</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/ellint4.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="ellint/ellint_3.html" title="Elliptic Integrals of the Third Kind - Legendre Form">ellint_3</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.15] exponential integral:</span>
+<span class="keyword">double</span> <span class="identifier">expint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">expintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the exponential integral Ei of <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/expint_i_1.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="expint/expint_i.html" title="Exponential Integral Ei">expint</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.16] Hermite polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">hermite</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hermitef</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hermitel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the n'th Hermite polynomial of <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/hermite_0.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_poly/hermite.html" title="Hermite Polynomials">hermite</a> for the
+ full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.18] Laguerre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the n'th Laguerre polynomial of <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/laguerre_0.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_poly/laguerre.html" title="Laguerre (and Associated) Polynomials">laguerre</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.19] Legendre polynomials:</span>
+<span class="keyword">double</span> <span class="identifier">legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the l'th Legendre polynomial of <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/legendre_0.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_poly/legendre.html" title="Legendre (and Associated) Polynomials">legendre_p</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.20] Riemann zeta function:</span>
+<span class="keyword">double</span> <span class="identifier">riemann_zeta</span><span class="special">(</span><span class="keyword">double</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">riemann_zetaf</span><span class="special">(</span><span class="keyword">float</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">riemann_zetal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the Riemann Zeta function of <span class="emphasis"><em>x</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/zeta1.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="zetas/zeta.html" title="Riemann Zeta Function">zeta</a> for the full template
+ (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.21] spherical Bessel functions (of the first kind):</span>
+<span class="keyword">double</span> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_besself</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_bessell</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the spherical Bessel function of the first kind of <span class="emphasis"><em>x</em></span>
+ j<sub>n</sub>(x):
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/sbessel2.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">sph_bessel</a> for
+ the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.22] spherical associated Legendre functions:</span>
+<span class="keyword">double</span> <span class="identifier">sph_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">theta</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the spherical associated Legendre function of <span class="emphasis"><em>l</em></span>,
+ <span class="emphasis"><em>m</em></span> and <span class="emphasis"><em>theta</em></span>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/spherical_3.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="sf_poly/sph_harm.html" title="Spherical Harmonics">spherical_harmonic</a>
+ for the full template (header only) version of this function.
+ </p>
+<pre class="programlisting"><span class="comment">// [5.2.1.23] spherical Neumann functions;</span>
+<span class="comment">// spherical Bessel functions (of the second kind):</span>
+<span class="keyword">double</span> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">sph_neumannf</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_neumannl</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the spherical Neumann function of <span class="emphasis"><em>x</em></span> y<sub>n</sub>(x):
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../equations/sbessel2.png"></span>
+ </p>
+<p>
+ See also <a class="link" href="bessel/sph_bessel.html" title="Spherical Bessel Functions of the First and Second Kinds">sph_bessel</a> for
+ the full template (header only) version of this function.
+ </p>
+<h5>
+<a name="math_toolkit.tr1_ref.h2"></a>
+ <span class="phrase"><a name="math_toolkit.tr1_ref.currently_unsupported_tr1_functi"></a></span><a class="link" href="tr1_ref.html#math_toolkit.tr1_ref.currently_unsupported_tr1_functi">Currently
+ Unsupported TR1 Functions</a>
+ </h5>
+<pre class="programlisting"><span class="comment">// [5.2.1.7] confluent hypergeometric functions:</span>
+<span class="keyword">double</span> <span class="identifier">conf_hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">conf_hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">conf_hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="comment">// [5.2.1.17] hypergeometric functions:</span>
+<span class="keyword">double</span> <span class="identifier">hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">float</span> <span class="identifier">hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span>
+</pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ These two functions are not implemented as they are not believed to be numerically
+ stable.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="c99.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../extern_c.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../constants.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/trans.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/trans.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,134 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quaternion Transcendentals</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="create.html" title="Quaternion Creation Functions">
+<link rel="next" href="quat_tests.html" title="Test Program">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="create.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_tests.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_trans">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.trans"></a><a class="link" href="trans.html" title="Quaternion Transcendentals">Quaternion Transcendentals</a>
+</h2></div></div></div>
+<p>
+ There is no <code class="computeroutput"><span class="identifier">log</span></code> or <code class="computeroutput"><span class="identifier">sqrt</span></code> provided for quaternions in this implementation,
+ and <code class="computeroutput"><span class="identifier">pow</span></code> is likewise restricted
+ to integral powers of the exponent. There are several reasons to this: on the
+ one hand, the equivalent of analytic continuation for quaternions ("branch
+ cuts") remains to be investigated thoroughly (by me, at any rate...),
+ and we wish to avoid the nonsense introduced in the standard by exponentiations
+ of complexes by complexes (which is well defined, but not in the standard...).
+ Talking of nonsense, saying that <code class="computeroutput"><span class="identifier">pow</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">)</span></code> is "implementation
+ defined" is just plain brain-dead...
+ </p>
+<p>
+ We do, however provide several transcendentals, chief among which is the exponential.
+ This author claims the complete proof of the "closed formula" as
+ his own, as well as its independant invention (there are claims to prior invention
+ of the formula, such as one by Professor Shoemake, and it is possible that
+ the formula had been known a couple of centuries back, but in absence of bibliographical
+ reference, the matter is pending, awaiting further investigation; on the other
+ hand, the definition and existence of the exponential on the quaternions, is
+ of course a fact known for a very long time). Basically, any converging power
+ series with real coefficients which allows for a closed formula in <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> can be transposed to <span class="emphasis"><em><span class="bold"><strong>H</strong></span></em></span>. More transcendentals of this type could
+ be added in a further revision upon request. It should be noted that it is
+ these functions which force the dependency upon the boost/math/special_functions/sinc.hpp
+ and the boost/math/special_functions/sinhc.hpp
+ headers.
+ </p>
+<h5>
+<a name="math_toolkit.trans.h0"></a>
+ <span class="phrase"><a name="math_toolkit.trans.exp"></a></span><a class="link" href="trans.html#math_toolkit.trans.exp">exp</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">exp</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the exponential of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.trans.h1"></a>
+ <span class="phrase"><a name="math_toolkit.trans.cos"></a></span><a class="link" href="trans.html#math_toolkit.trans.cos">cos</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">cos</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the cosine of the quaternion
+ </p>
+<h5>
+<a name="math_toolkit.trans.h2"></a>
+ <span class="phrase"><a name="math_toolkit.trans.sin"></a></span><a class="link" href="trans.html#math_toolkit.trans.sin">sin</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">sin</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the sine of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.trans.h3"></a>
+ <span class="phrase"><a name="math_toolkit.trans.tan"></a></span><a class="link" href="trans.html#math_toolkit.trans.tan">tan</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">tan</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the tangent of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.trans.h4"></a>
+ <span class="phrase"><a name="math_toolkit.trans.cosh"></a></span><a class="link" href="trans.html#math_toolkit.trans.cosh">cosh</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">cosh</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic cosine of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.trans.h5"></a>
+ <span class="phrase"><a name="math_toolkit.trans.sinh"></a></span><a class="link" href="trans.html#math_toolkit.trans.sinh">sinh</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">sinh</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic sine of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.trans.h6"></a>
+ <span class="phrase"><a name="math_toolkit.trans.tanh"></a></span><a class="link" href="trans.html#math_toolkit.trans.tanh">tanh</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">tanh</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic tangent of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.trans.h7"></a>
+ <span class="phrase"><a name="math_toolkit.trans.pow"></a></span><a class="link" href="trans.html#math_toolkit.trans.pow">pow</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the n-th power of the quaternion q.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="create.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="quat_tests.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/tuning.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/tuning.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,885 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Performance Tuning Macros</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../perf.html" title="Chapter 14. Performance">
+<link rel="prev" href="comp_compilers.html" title="Comparing Compilers">
+<link rel="next" href="comparisons.html" title="Comparisons to Other Open Source Libraries">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="comp_compilers.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="comparisons.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_tuning">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.tuning"></a><a class="link" href="tuning.html" title="Performance Tuning Macros">Performance Tuning Macros</a>
+</h2></div></div></div>
+<p>
+ There are a small number of performance tuning options that are determined
+ by configuration macros. These should be set in boost/math/tools/user.hpp;
+ or else reported to the Boost-development mailing list so that the appropriate
+ option for a given compiler and OS platform can be set automatically in our
+ configuration setup.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Meaning
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ BOOST_MATH_POLY_METHOD
+ </p>
+ </td>
+<td>
+ <p>
+ Determines how polynomials and most rational functions are evaluated.
+ Define to one of the values 0, 1, 2 or 3: see below for the meaning
+ of these values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_MATH_RATIONAL_METHOD
+ </p>
+ </td>
+<td>
+ <p>
+ Determines how symmetrical rational functions are evaluated: mostly
+ this only effects how the Lanczos approximation is evaluated, and
+ how the <code class="computeroutput"><span class="identifier">evaluate_rational</span></code>
+ function behaves. Define to one of the values 0, 1, 2 or 3: see below
+ for the meaning of these values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_MATH_MAX_POLY_ORDER
+ </p>
+ </td>
+<td>
+ <p>
+ The maximum order of polynomial or rational function that will be
+ evaluated by a method other than 0 (a simple "for" loop).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_MATH_INT_TABLE_TYPE(RT, IT)
+ </p>
+ </td>
+<td>
+ <p>
+ Many of the coefficients to the polynomials and rational functions
+ used by this library are integers. Normally these are stored as tables
+ as integers, but if mixed integer / floating point arithmetic is
+ much slower than regular floating point arithmetic then they can
+ be stored as tables of floating point values instead. If mixed arithmetic
+ is slow then add:
+ </p>
+ <p>
+ #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) RT
+ </p>
+ <p>
+ to boost/math/tools/user.hpp, otherwise the default of:
+ </p>
+ <p>
+ #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) IT
+ </p>
+ <p>
+ Set in boost/math/config.hpp is fine, and may well result in smaller
+ code.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ The values to which <code class="computeroutput"><span class="identifier">BOOST_MATH_POLY_METHOD</span></code>
+ and <code class="computeroutput"><span class="identifier">BOOST_MATH_RATIONAL_METHOD</span></code>
+ may be set are as follows:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Value
+ </p>
+ </th>
+<th>
+ <p>
+ Effect
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+<td>
+ <p>
+ The polynomial or rational function is evaluated using Horner's method,
+ and a simple for-loop.
+ </p>
+ <p>
+ Note that if the order of the polynomial or rational function is
+ a runtime parameter, or the order is greater than the value of <code class="computeroutput"><span class="identifier">BOOST_MATH_MAX_POLY_ORDER</span></code>, then
+ this method is always used, irrespective of the value of <code class="computeroutput"><span class="identifier">BOOST_MATH_POLY_METHOD</span></code> or <code class="computeroutput"><span class="identifier">BOOST_MATH_RATIONAL_METHOD</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 1
+ </p>
+ </td>
+<td>
+ <p>
+ The polynomial or rational function is evaluated without the use
+ of a loop, and using Horner's method. This only occurs if the order
+ of the polynomial is known at compile time and is less than or equal
+ to <code class="computeroutput"><span class="identifier">BOOST_MATH_MAX_POLY_ORDER</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ The polynomial or rational function is evaluated without the use
+ of a loop, and using a second order Horner's method. In theory this
+ permits two operations to occur in parallel for polynomials, and
+ four in parallel for rational functions. This only occurs if the
+ order of the polynomial is known at compile time and is less than
+ or equal to <code class="computeroutput"><span class="identifier">BOOST_MATH_MAX_POLY_ORDER</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 3
+ </p>
+ </td>
+<td>
+ <p>
+ The polynomial or rational function is evaluated without the use
+ of a loop, and using a second order Horner's method. In theory this
+ permits two operations to occur in parallel for polynomials, and
+ four in parallel for rational functions. This differs from method
+ "2" in that the code is carefully ordered to make the parallelisation
+ more obvious to the compiler: rather than relying on the compiler's
+ optimiser to spot the parallelisation opportunities. This only occurs
+ if the order of the polynomial is known at compile time and is less
+ than or equal to <code class="computeroutput"><span class="identifier">BOOST_MATH_MAX_POLY_ORDER</span></code>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ To determine which of these options is best for your particular compiler/platform
+ build the performance test application with your usual release settings, and
+ run the program with the --tune command line option.
+ </p>
+<p>
+ In practice the difference between methods is rather small at present, as the
+ following table shows. However, parallelisation /vectorisation is likely to
+ become more important in the future: quite likely the methods currently supported
+ will need to be supplemented or replaced by ones more suited to highly vectorisable
+ processors in the future.
+ </p>
+<div class="table">
+<a name="math_toolkit.tuning.a_comparison_of_polynomial_evalu"></a><p class="title"><b>Table 14.3. A Comparison of Polynomial Evaluation Methods</b></p>
+<div class="table-contents"><table class="table" summary="A Comparison of Polynomial Evaluation Methods">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Compiler/platform
+ </p>
+ </th>
+<th>
+ <p>
+ Method 0
+ </p>
+ </th>
+<th>
+ <p>
+ Method 1
+ </p>
+ </th>
+<th>
+ <p>
+ Method 2
+ </p>
+ </th>
+<th>
+ <p>
+ Method 3
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Microsoft C++ 9.0, Polynomial evaluation
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.26</p>
+<p> </p>
+<p>(7.421e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.22</p>
+<p> </p>
+<p>(7.226e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.901e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.04</p>
+<p> </p>
+<p>(6.115e-008s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Microsoft C++ 9.0, Rational evaluation
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.008e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.008e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.43</p>
+<p> </p>
+<p>(1.445e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.40</p>
+<p> </p>
+<p>(1.409e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Intel C++ 11.1 (Windows), Polynomial evaluation
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.18</p>
+<p> </p>
+<p>(6.517e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.18</p>
+<p> </p>
+<p>(6.505e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.516e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.516e-008s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Intel C++ 11.1 (Windows), Rational evaluation
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(8.947e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.02</p>
+<p> </p>
+<p>(9.130e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.49</p>
+<p> </p>
+<p>(1.333e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.04</p>
+<p> </p>
+<p>(9.325e-008s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ GNU G++ 4.2 (Linux), Polynomial evaluation
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.61</p>
+<p> </p>
+<p>(1.220e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.68</p>
+<p> </p>
+<p>(1.269e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.23</p>
+<p> </p>
+<p>(9.275e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(7.566e-008s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ GNU G++ 4.2 (Linux), Rational evaluation
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.26</p>
+<p> </p>
+<p>(1.660e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.33</p>
+<p> </p>
+<p>(1.758e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.318e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.15</p>
+<p> </p>
+<p>(1.513e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Intel C++ 10.0 (Linux), Polynomial evaluation
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.15</p>
+<p> </p>
+<p>(9.154e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.15</p>
+<p> </p>
+<p>(9.154e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(7.934e-008s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(7.934e-008s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Intel C++ 10.0 (Linux), Rational evaluation
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.245e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.245e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.35</p>
+<p> </p>
+<p>(1.684e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.04</p>
+<p> </p>
+<p>(1.294e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ There is one final performance tuning option that is available as a compile
+ time <a class="link" href="../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy</a>. Normally when evaluating functions
+ at <code class="computeroutput"><span class="keyword">double</span></code> precision, these are
+ actually evaluated at <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ precision internally: this helps to ensure that as close to full <code class="computeroutput"><span class="keyword">double</span></code> precision as possible is achieved, but
+ may slow down execution in some environments. The defaults for this policy
+ can be changed by <a class="link" href="pol_ref/policy_defaults.html" title="Using Macros to Change the Policy Defaults">defining
+ the macro <code class="computeroutput"><span class="identifier">BOOST_MATH_PROMOTE_DOUBLE_POLICY</span></code></a>
+ to <code class="computeroutput"><span class="keyword">false</span></code>, or <a class="link" href="pol_ref/internal_promotion.html" title="Internal Floating-point Promotion Policies">by
+ specifying a specific policy</a> when calling the special functions or distributions.
+ See also the <a class="link" href="pol_tutorial.html" title="Policy Tutorial">policy tutorial</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.tuning.performance_comparison_with_and_"></a><p class="title"><b>Table 14.4. Performance Comparison with and Without Internal Promotion to long double</b></p>
+<div class="table-contents"><table class="table" summary="Performance Comparison with and Without Internal Promotion to long double">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ GCC 4.2 , Linux
+ </p>
+ <p>
+ (with internal promotion of double to long double).
+ </p>
+ </th>
+<th>
+ <p>
+ GCC 4.2, Linux
+ </p>
+ <p>
+ (without promotion of double).
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_erf/error_function.html" title="Error Functions">erf</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.48</p>
+<p> </p>
+<p>(1.387e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(9.377e-008s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_erf/error_inv.html" title="Error Function Inverses">erf_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.11</p>
+<p> </p>
+<p>(4.009e-007s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(3.598e-007s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibeta</a>
+ and <a class="link" href="sf_beta/ibeta_function.html" title="Incomplete Beta Functions">ibetac</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.29</p>
+<p> </p>
+<p>(5.354e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(4.137e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inv</a>
+ and <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.44</p>
+<p> </p>
+<p>(2.220e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(1.538e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_inva</a>,
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_inva</a>,
+ <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibeta_invb</a>
+ and <a class="link" href="sf_beta/ibeta_inv_function.html" title="The Incomplete Beta Function Inverses">ibetac_invb</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.25</p>
+<p> </p>
+<p>(7.009e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(5.607e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a> and
+ <a class="link" href="sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.26</p>
+<p> </p>
+<p>(3.116e-006s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.464e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>
+ and <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.27</p>
+<p> </p>
+<p>(1.178e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(9.291e-006s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inva</a>
+ and <a class="link" href="sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inva</a>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p>1.20</p>
+<p> </p>
+<p>(2.765e-005s)</p>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ </p>
+<p><span class="bold"><strong>1.00</strong></span></p>
+<p> </p>
+<p>(2.311e-005s)</p>
+<p>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="comp_compilers.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="comparisons.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/tutorial.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/tutorial.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tutorial</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../constants.html" title="Chapter 6. Mathematical Constants">
+<link rel="prev" href="constants_intro.html" title="Introduction">
+<link rel="next" href="tutorial/non_templ.html" title="Use in non-template code">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="constants_intro.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial/non_templ.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_tutorial">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.tutorial"></a><a class="link" href="tutorial.html" title="Tutorial">Tutorial</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="tutorial/non_templ.html">Use in non-template
+ code</a></span></dt>
+<dt><span class="section">Use in template code</span></dt>
+<dt><span class="section"><a href="tutorial/user_def.html">Use With User-Defined
+ Types</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="constants_intro.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial/non_templ.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/tutorial/non_templ.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/tutorial/non_templ.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Use in non-template code</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../tutorial.html" title="Tutorial">
+<link rel="prev" href="../tutorial.html" title="Tutorial">
+<link rel="next" href="templ.html" title="Use in template code">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="templ.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_tutorial_non_templ">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.tutorial.non_templ"></a><a class="link" href="non_templ.html" title="Use in non-template code">Use in non-template
+ code</a>
+</h3></div></div></div>
+<p>
+ When using the math constants at your chosen fixed precision in non-template
+ code, you can simply add a <code class="computeroutput"><span class="keyword">using</span> <span class="keyword">namespace</span></code> declaration, for example, <code class="computeroutput"><span class="keyword">using</span> <span class="keyword">namespace</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">double_constants</span></code>, to make the constants
+ of the correct precision for your code visible in the current scope, and
+ then use each constant <span class="emphasis"><em>as a simple variable - sans brackets</em></span>:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">double</span> <span class="identifier">area</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">r</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">double_constants</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">pi</span> <span class="special">*</span> <span class="identifier">r</span> <span class="special">*</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Had our function been written as taking a <code class="computeroutput"><span class="keyword">float</span></code>
+ rather than a <code class="computeroutput"><span class="keyword">double</span></code>, we could
+ have written instead:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">float</span> <span class="identifier">area</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">r</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">float_constants</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">pi</span> <span class="special">*</span> <span class="identifier">r</span> <span class="special">*</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Likewise, constants that are suitable for use at <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> precision are available in
+ the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">long_double_constants</span></code>.
+ </p>
+<p>
+ You can see the full list of available constants at <a class="link" href="../constants.html" title="The Mathematical Constants">math_toolkit.constants</a>.
+ </p>
+<p>
+ Some examples of using constants are at constants_eg1.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../tutorial.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="templ.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/tutorial/templ.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/tutorial/templ.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,147 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Use in template code</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../tutorial.html" title="Tutorial">
+<link rel="prev" href="non_templ.html" title="Use in non-template code">
+<link rel="next" href="user_def.html" title="Use With User-Defined Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="non_templ.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="user_def.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_tutorial_templ">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.tutorial.templ"></a><a class="link" href="templ.html" title="Use in template code">Use in template code</a>
+</h3></div></div></div>
+<p>
+ When using the constants inside a function template, we need to ensure that
+ we use a constant of the correct precision for our template parameters. We
+ can do this by calling the function-template versions, <code class="computeroutput"><span class="identifier">pi</span><span class="special"><</span><span class="identifier">FPType</span><span class="special">>()</span></code>, of the constants like this:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">></span>
+<span class="identifier">Real</span> <span class="identifier">area</span><span class="special">(</span><span class="identifier">Real</span> <span class="identifier">r</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">pi</span><span class="special"><</span><span class="identifier">Real</span><span class="special">>()</span> <span class="special">*</span> <span class="identifier">r</span> <span class="special">*</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Although this syntax is a little less "cute" than the non-template
+ version, the code is no less efficient (at least for the built-in 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>)
+ : the function template versions of the constants are simple inline functions
+ that return a constant of the correct precision for the type used. In addition,
+ these functions are declared <code class="computeroutput"><span class="identifier">constexp</span></code>
+ for those compilers that support this, allowing the result to be used in
+ constant-expressions provided the template argument is a literal type.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Keep in mind the difference between the variable version, just <code class="computeroutput"><span class="identifier">pi</span></code>, and the template-function version:
+ the template-function requires both a <<em class="replaceable"><code>floating-point-type</code></em>>
+ and function call <code class="computeroutput"><span class="special">()</span></code> brackets,
+ for example: <code class="computeroutput"><span class="identifier">pi</span><span class="special"><</span><span class="keyword">double</span><span class="special">>()</span></code>.
+ You cannot write <code class="computeroutput"><span class="keyword">double</span> <span class="identifier">p</span>
+ <span class="special">=</span> <span class="identifier">pi</span><span class="special"><>()</span></code>, nor <code class="computeroutput"><span class="keyword">double</span>
+ <span class="identifier">p</span> <span class="special">=</span>
+ <span class="identifier">pi</span><span class="special">()</span></code>.
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ You can always use <span class="bold"><strong>both</strong></span> variable and template-function
+ versions <span class="bold"><strong>provided calls are fully qualified</strong></span>,
+ for example:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">my_pi1</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><</span><span class="keyword">double</span><span class="special">>();</span>
+<span class="keyword">double</span> <span class="identifier">my_pi2</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">double_constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">;</span>
+</pre>
+</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="../../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ It may be tempting to simply define
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">double_constants</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">;</span>
+</pre>
+<p>
+ but if you do define two namespaces, this will, of course, create ambiguity!
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">my_pi</span> <span class="special">=</span> <span class="identifier">pi</span><span class="special">();</span> <span class="comment">// error C2872: 'pi' : ambiguous symbol</span>
+<span class="keyword">double</span> <span class="identifier">my_pi2</span> <span class="special">=</span> <span class="identifier">pi</span><span class="special">;</span> <span class="comment">// Context does not allow for disambiguation of overloaded function</span>
+</pre>
+<p>
+ Although the mistake above is fairly obvious, it is also not too difficult
+ to do this accidentally, or worse, create it in someone elses code.
+ </p>
+<p>
+ Therefore is it prudent to avoid this risk by <span class="bold"><strong>localising
+ the scope of such definitions</strong></span>, as shown above.
+ </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="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ Be very careful with the type provided as parameter. For example, providing
+ an <span class="bold"><strong>integer</strong></span> instead of a floating-point
+ type can be disastrous (a C++ feature).
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Area = "</span> <span class="special"><<</span> <span class="identifier">area</span><span class="special">(</span><span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Area = 12!!!</span></pre>
+<p>
+ You should get a compiler warning
+ </p>
+<pre class="programlisting">warning : 'return' : conversion from 'double' to 'int', possible loss of data
+</pre>
+<p>
+ Failure to heed this warning can lead to very wrong answers!
+ </p>
+<p>
+ You can also avoid this by being explicit about the type of <code class="computeroutput"><span class="identifier">Area</span></code>.
+ </p>
+<pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Area = "</span> <span class="special"><<</span> <span class="identifier">area</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Area = 12.566371</span></pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="non_templ.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="user_def.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/tutorial/user_def.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/tutorial/user_def.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,325 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Use With User-Defined Types</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../tutorial.html" title="Tutorial">
+<link rel="prev" href="templ.html" title="Use in template code">
+<link rel="next" href="../constants.html" title="The Mathematical Constants">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="templ.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../constants.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_tutorial_user_def">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.tutorial.user_def"></a><a class="link" href="user_def.html" title="Use With User-Defined Types">Use With User-Defined
+ Types</a>
+</h3></div></div></div>
+<p>
+ The most common example of a high-precision user-defined type will probably
+ be Boost.Multiprecision.
+ </p>
+<p>
+ The syntax for using the function-call constants with user-defined types
+ is the same as it is in the template class, which is to say we use:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><</span><span class="identifier">UserDefinedType</span><span class="special">>();</span>
+</pre>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span><span class="special">>();</span>
+</pre>
+<p>
+ giving π with a precision of 50 decimal digits.
+ </p>
+<p>
+ However, since the precision of the user-defined type may be much greater
+ than that of the built-in floating point types, how the value returned is
+ created is as follows:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If the precision of the type is known at compile time:
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
+<li class="listitem">
+ If the precision is less than or equal to that of a <code class="computeroutput"><span class="keyword">float</span></code> and the type is constructable
+ from a <code class="computeroutput"><span class="keyword">float</span></code> then
+ our code returns a <code class="computeroutput"><span class="keyword">float</span></code>
+ literal. If the user-defined type is a literal type then the function
+ call that returns the constant will be a <code class="computeroutput"><span class="identifier">constexp</span></code>.
+ </li>
+<li class="listitem">
+ If the precision is less than or equal to that of a <code class="computeroutput"><span class="keyword">double</span></code> and the type is constructable
+ from a <code class="computeroutput"><span class="keyword">double</span></code> then
+ our code returns a <code class="computeroutput"><span class="keyword">double</span></code>
+ literal. If the user-defined type is a literal type then the function
+ call that returns the constant will be a <code class="computeroutput"><span class="identifier">constexp</span></code>.
+ </li>
+<li class="listitem">
+ If the precision is less than or equal to that of a <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ and the type is constructable from a <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> then our code returns
+ a <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ literal. If the user-defined type is a literal type then the function
+ call that returns the constant will be a <code class="computeroutput"><span class="identifier">constexp</span></code>.
+ </li>
+<li class="listitem">
+ If the precision is less than or equal to that of a <code class="computeroutput"><span class="identifier">__float128</span></code> (and the compiler
+ supports such a type) and the type is constructable from a <code class="computeroutput"><span class="identifier">__float128</span></code> then our code returns
+ a <code class="computeroutput"><span class="identifier">__float128</span></code> literal.
+ If the user-defined type is a literal type then the function call
+ that returns the constant will be a <code class="computeroutput"><span class="identifier">constexp</span></code>.
+ </li>
+<li class="listitem">
+ If the precision is less than 100 decimal digits, then the constant
+ will be constructed (just the once, then cached in a thread-safe
+ manner) from a string representation of the constant. In this case
+ the value is returned as a const reference to the cached value.
+ </li>
+<li class="listitem">
+ Otherwise the value is computed (just once, then cached in a thread-safe
+ manner). In this case the value is returned as a const reference
+ to the cached value.
+ </li>
+</ul></div>
+ </li>
+<li class="listitem">
+ If the precision is unknown at compile time then:
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
+<li class="listitem">
+ If the runtime precision (obtained from a call to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">digits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>()</span></code>)
+ is less than 100 decimal digits, then the constant is constructed
+ "on the fly" from the string representation of the constant.
+ </li>
+<li class="listitem">
+ Otherwise the value is constructed "on the fly" by calculating
+ then value of the constant using the current default precision
+ of the type. Note that this can make use of the constants rather
+ expensive.
+ </li>
+</ul></div>
+ </li>
+</ul></div>
+<p>
+ In addition, it is possible to pass a <code class="computeroutput"><span class="identifier">Policy</span></code>
+ type as a second template argument, and use this to control the precision:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">digits2</span><span class="special"><</span><span class="number">80</span><span class="special">></span> <span class="special">></span> <span class="identifier">my_policy_type</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><</span><span class="identifier">MyType</span><span class="special">,</span> <span class="identifier">my_policy_type</span><span class="special">>();</span>
+</pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Boost.Math doesn't know how to control the internal precision of <code class="computeroutput"><span class="identifier">MyType</span></code>, the policy just controls how
+ the selection process above is carried out, and the calculation precision
+ if the result is computed.
+ </p></td></tr>
+</table></div>
+<p>
+ It is also possible to control which method is used to construct the constant
+ by specialising the traits class <code class="computeroutput"><span class="identifier">construction_traits</span></code>:
+ </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">namespace</span> <span class="identifier">constant</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">construction_traits</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ Where <span class="emphasis"><em>N</em></span> takes one of the following values:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="emphasis"><em>N</em></span>
+ </p>
+ </th>
+<th>
+ <p>
+ Meaning
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 0
+ </p>
+ </td>
+<td>
+ <p>
+ The precision is unavailable at compile time; either construct
+ from a decimal digit string or calculate on the fly depending upon
+ the runtime precision.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 1
+ </p>
+ </td>
+<td>
+ <p>
+ Return a float precision constant.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ Return a double precision constant.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 3
+ </p>
+ </td>
+<td>
+ <p>
+ Return a long double precision constant.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 4
+ </p>
+ </td>
+<td>
+ <p>
+ Construct the result from the string representation, and cache
+ the result.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Any other value <span class="emphasis"><em>N</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Sets the compile time precision to <span class="emphasis"><em>N</em></span> bits.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="math_toolkit.tutorial.user_def.h0"></a>
+ <span class="phrase"><a name="math_toolkit.tutorial.user_def.custom_specializing_a_constant"></a></span><a class="link" href="user_def.html#math_toolkit.tutorial.user_def.custom_specializing_a_constant">Custom
+ Specializing a constant</a>
+ </h6>
+<p>
+ In addition, for user-defined types that need special handling, it's possible
+ to [partially-] specialize the internal structure used by each constant.
+ For example, suppose we're using the C++ wrapper around MPFR <code class="computeroutput"><span class="identifier">mpfr_class</span></code>: this has its own representation
+ of Pi which we may well wish to use in place of the above mechanism. We can
+ achieve this by specialising the class template <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">constant_pi</span></code>:
+ </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">namespace</span> <span class="identifier">constants</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">detail</span><span class="special">{</span>
+
+<span class="keyword">template</span><span class="special"><></span>
+<span class="keyword">struct</span> <span class="identifier">constant_pi</span><span class="special"><</span><span class="identifier">mpfr_class</span><span class="special">></span>
+<span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="identifier">mpfr_class</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">N</span><span class="special">>&)</span>
+ <span class="special">{</span>
+ <span class="comment">// The template param N is one of the values in the table above,</span>
+ <span class="comment">// we can either handle all cases in one as is the case here,</span>
+ <span class="comment">// or overload "get" for the different options.</span>
+ <span class="identifier">mpfr_class</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">mpfr_const_pi</span><span class="special">(</span><span class="identifier">result</span><span class="special">.</span><span class="identifier">get_mpfr_t</span><span class="special">(),</span> <span class="identifier">GMP_RNDN</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="special">}}}}</span> <span class="comment">// namespaces</span>
+</pre>
+<h6>
+<a name="math_toolkit.tutorial.user_def.h1"></a>
+ <span class="phrase"><a name="math_toolkit.tutorial.user_def.diagnosing_what_meta_programmed_"></a></span><a class="link" href="user_def.html#math_toolkit.tutorial.user_def.diagnosing_what_meta_programmed_">Diagnosing
+ what meta-programmed code is doing</a>
+ </h6>
+<p>
+ Finally, since it can be tricky to diagnose what meta-programmed code is
+ doing, there is a diagnostic routine that prints information about how this
+ library will handle a specific type, it can be used like this:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">info</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">print_info_on_type</span><span class="special"><</span><span class="identifier">MyType</span><span class="special">>();</span>
+<span class="special">}</span>
+</pre>
+<p>
+ If you wish, you can also pass an optional std::ostream argument to the
+ <code class="computeroutput"><span class="identifier">print_info_on_type</span></code> function.
+ Typical output for a user-defined type looks like this:
+ </p>
+<pre class="programlisting">Information on the Implementation and Handling of
+Mathematical Constants for Type class boost::math::concepts::real_concept
+
+Checking for std::numeric_limits<class boost::math::concepts::real_concept> specialisation: no
+boost::math::policies::precision<class boost::math::concepts::real_concept, Policy>
+reports that there is no compile type precision available.
+boost::math::tools::digits<class boost::math::concepts::real_concept>()
+reports that the current runtime precision is
+53 binary digits.
+No compile time precision is available, the construction method
+will be decided at runtime and results will not be cached
+- this may lead to poor runtime performance.
+Current runtime precision indicates that
+the constant will be constructed from a string on each call.
+</pre>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="templ.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../constants.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/value_op.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/value_op.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,99 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quaternion Value Operations</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../quaternions.html" title="Chapter 8. Quaternions">
+<link rel="prev" href="quat_non_mem.html" title="Quaternion Non-Member Operators">
+<link rel="next" href="create.html" title="Quaternion Creation Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="quat_non_mem.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="create.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_value_op">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.value_op"></a><a class="link" href="value_op.html" title="Quaternion Value Operations">Quaternion Value Operations</a>
+</h2></div></div></div>
+<h5>
+<a name="math_toolkit.value_op.h0"></a>
+ <span class="phrase"><a name="math_toolkit.value_op.real_and_unreal"></a></span><a class="link" href="value_op.html#math_toolkit.value_op.real_and_unreal">real
+ and unreal</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">real</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">unreal</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ These return <code class="computeroutput"><span class="identifier">q</span><span class="special">.</span><span class="identifier">real</span><span class="special">()</span></code> and
+ <code class="computeroutput"><span class="identifier">q</span><span class="special">.</span><span class="identifier">unreal</span><span class="special">()</span></code>
+ respectively.
+ </p>
+<h5>
+<a name="math_toolkit.value_op.h1"></a>
+ <span class="phrase"><a name="math_toolkit.value_op.conj"></a></span><a class="link" href="value_op.html#math_toolkit.value_op.conj">conj</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">conj</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This returns the conjugate of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.value_op.h2"></a>
+ <span class="phrase"><a name="math_toolkit.value_op.sup"></a></span><a class="link" href="value_op.html#math_toolkit.value_op.sup">sup</a>
+ </h5>
+<p>
+ template<typename T> T sup(quaternion<T> const & q);
+ </p>
+<p>
+ This return the sup norm (the greatest among <code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())...</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()))</span></code> of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.value_op.h3"></a>
+ <span class="phrase"><a name="math_toolkit.value_op.l1"></a></span><a class="link" href="value_op.html#math_toolkit.value_op.l1">l1</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">l1</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This return the l1 norm <code class="computeroutput"><span class="special">(</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())+...+</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()))</span></code> of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.value_op.h4"></a>
+ <span class="phrase"><a name="math_toolkit.value_op.abs"></a></span><a class="link" href="value_op.html#math_toolkit.value_op.abs">abs</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">abs</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This return the magnitude (Euclidian norm) of the quaternion.
+ </p>
+<h5>
+<a name="math_toolkit.value_op.h5"></a>
+ <span class="phrase"><a name="math_toolkit.value_op.norm"></a></span><a class="link" href="value_op.html#math_toolkit.value_op.norm">norm</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">norm</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span><span class="keyword">const</span> <span class="special">&</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This return the (Cayley) norm of the quaternion. The term "norm"
+ might be confusing, as most people associate it with the Euclidian norm (and
+ quadratic functionals). For this version of (the mathematical objects known
+ as) quaternions, the Euclidian norm (also known as magnitude) is the square
+ root of the Cayley norm.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="quat_non_mem.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="create.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/zetas.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/zetas.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,37 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Zeta Functions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Math Toolkit">
+<link rel="up" href="../special.html" title="Chapter 3. Special Functions">
+<link rel="prev" href="jacobi/jacobi_sn.html" title="Jacobi Elliptic Function sn">
+<link rel="next" href="zetas/zeta.html" title="Riemann Zeta Function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="jacobi/jacobi_sn.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="zetas/zeta.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_zetas">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="math_toolkit.zetas"></a><a class="link" href="zetas.html" title="Zeta Functions">Zeta Functions</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section">Riemann Zeta Function</span></dt></dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="jacobi/jacobi_sn.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../special.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="zetas/zeta.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/math_toolkit/zetas/zeta.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/math_toolkit/zetas/zeta.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,302 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Riemann Zeta Function</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Math Toolkit">
+<link rel="up" href="../zetas.html" title="Zeta Functions">
+<link rel="prev" href="../zetas.html" title="Zeta Functions">
+<link rel="next" href="../expint.html" title="Exponential Integrals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../zetas.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../zetas.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../expint.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section math_toolkit_zetas_zeta">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="math_toolkit.zetas.zeta"></a><a class="link" href="zeta.html" title="Riemann Zeta Function">Riemann Zeta Function</a>
+</h3></div></div></div>
+<h5>
+<a name="math_toolkit.zetas.zeta.h0"></a>
+ <span class="phrase"><a name="math_toolkit.zetas.zeta.synopsis"></a></span><a class="link" href="zeta.html#math_toolkit.zetas.zeta.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">zeta</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">zeta</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">zeta</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
+ type calculation rules</em></span></a>: the return type is <code class="computeroutput"><span class="keyword">double</span></code> if T is an integer type, and T otherwise.
+ </p>
+<p>
+ The final <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">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="Chapter 13. Policies: Controlling Precision, Error Handling etc">policy
+ documentation for more details</a>.
+ </p>
+<h5>
+<a name="math_toolkit.zetas.zeta.h1"></a>
+ <span class="phrase"><a name="math_toolkit.zetas.zeta.description"></a></span><a class="link" href="zeta.html#math_toolkit.zetas.zeta.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">zeta</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</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="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">zeta</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 13. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+</pre>
+<p>
+ Returns the <a href="http://mathworld.wolfram.com/RiemannZetaFunction.html" target="_top">zeta
+ function</a> of z:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/zeta1.png"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/zeta1.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../graphs/zeta2.png" align="middle"></span>
+ </p>
+<h5>
+<a name="math_toolkit.zetas.zeta.h2"></a>
+ <span class="phrase"><a name="math_toolkit.zetas.zeta.accuracy"></a></span><a class="link" href="zeta.html#math_toolkit.zetas.zeta.accuracy">Accuracy</a>
+ </h5>
+<p>
+ The following table shows the peak errors (in units of epsilon) found on
+ various platforms with various floating point types, along with comparisons
+ to the GSL-1.9 and
+ Cephes libraries. Unless
+ otherwise specified any floating point type that is narrower than the one
+ shown will have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
+ zero error</a>.
+ </p>
+<div class="table">
+<a name="math_toolkit.zetas.zeta.errors_in_the_function_zeta_z"></a><p class="title"><b>Table 3.30. Errors In the Function zeta(z)</b></p>
+<div class="table-contents"><table class="table" summary="Errors In the Function zeta(z)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Significand Size
+ </p>
+ </th>
+<th>
+ <p>
+ Platform and Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ z > 0
+ </p>
+ </th>
+<th>
+ <p>
+ z < 0
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ Win32, Visual C++ 8
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.99 Mean=0.1
+ </p>
+ <p>
+ GSL Peak=8.7 Mean=1.0
+ </p>
+ <p>
+ Cephes Peak=2.1
+ Mean=1.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=7.1 Mean=3.0
+ </p>
+ <p>
+ GSL Peak=137 Mean=14
+ </p>
+ <p>
+ Cephes Peak=5084
+ Mean=470
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ RedHat Linux IA_EM64, gcc-4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.99 Mean=0.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=570 Mean=60
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 64
+ </p>
+ </td>
+<td>
+ <p>
+ Redhat Linux IA64, gcc-4.1
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=0.99 Mean=0.5
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=559 Mean=56
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 113
+ </p>
+ </td>
+<td>
+ <p>
+ HPUX IA64, aCC A.06.06
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1.0 Mean=0.4
+ </p>
+ </td>
+<td>
+ <p>
+ Peak=1018 Mean=79
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><h5>
+<a name="math_toolkit.zetas.zeta.h3"></a>
+ <span class="phrase"><a name="math_toolkit.zetas.zeta.testing"></a></span><a class="link" href="zeta.html#math_toolkit.zetas.zeta.testing">Testing</a>
+ </h5>
+<p>
+ The tests for these functions come in two parts: basic sanity checks use
+ spot values calculated using <a href="http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=Zeta" target="_top">Mathworld's
+ online evaluator</a>, while accuracy checks use high-precision test values
+ calculated at 1000-bit precision with NTL::RR
+ and this implementation. Note that the generic and type-specific versions
+ of these functions use differing implementations internally, so this gives
+ us reasonably independent test data. Using our test data to test other "known
+ good" implementations also provides an additional sanity check.
+ </p>
+<h5>
+<a name="math_toolkit.zetas.zeta.h4"></a>
+ <span class="phrase"><a name="math_toolkit.zetas.zeta.implementation"></a></span><a class="link" href="zeta.html#math_toolkit.zetas.zeta.implementation">Implementation</a>
+ </h5>
+<p>
+ All versions of these functions first use the usual reflection formulas to
+ make their arguments positive:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/zeta3.png"></span>
+ </p>
+<p>
+ The generic versions of these functions are implemented using the series:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/zeta6.png"></span>
+ </p>
+<p>
+ When the significand (mantissa) size is recognised (currently for 53, 64
+ and 113-bit reals, plus single-precision 24-bit handled via promotion to
+ double) then a series of rational approximations <a class="link" href="../sf_implementation.html#math_toolkit.sf_implementation.rational_approximations_used">devised
+ by JM</a> are used.
+ </p>
+<p>
+ For 0 < z < 1 the approximating form is:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/zeta4.png"></span>
+ </p>
+<p>
+ For a rational approximation R(1-z) and a constant C.
+ </p>
+<p>
+ For 1 < z < 4 the approximating form is:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../equations/zeta5.png"></span>
+ </p>
+<p>
+ For a rational approximation R(n-z) and a constant C and integer n.
+ </p>
+<p>
+ For z > 4 the approximating form is:
+ </p>
+<p>
+ ζ(z) = 1 + e<sup>R(z - n)</sup>
+ </p>
+<p>
+ For a rational approximation R(z-n) and integer n, note that the accuracy
+ required for R(z-n) is not full machine precision, but an absolute error
+ of: ε/R(0). This saves us quite a few digits when dealing with large z, especially
+ when ε is small.
+ </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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="../zetas.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../zetas.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../expint.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/octonions.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/octonions.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 9. Octonions</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/quat_todo.html" title="To Do">
+<link rel="next" href="math_toolkit/oct_overview.html" title="Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/quat_todo.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/oct_overview.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="octonions"></a>Chapter 9. Octonions</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section">Header File</span></dt>
+<dt><span class="section">Synopsis</span></dt>
+<dt><span class="section">Template Class octonion</span></dt>
+<dt><span class="section">Octonion Specializations</span></dt>
+<dt><span class="section">Octonion Member Typedefs</span></dt>
+<dt><span class="section">Octonion Member Functions</span></dt>
+<dt><span class="section">Octonion Non-Member Operators</span></dt>
+<dt><span class="section">Octonion Value Operations</span></dt>
+<dt><span class="section">Octonion Creation Functions</span></dt>
+<dt><span class="section">Octonions Transcendentals</span></dt>
+<dt><span class="section">Test Program</span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+<dt><span class="section">History</span></dt>
+<dt><span class="section">To Do</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/quat_todo.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/oct_overview.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/overview.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/overview.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 1. Overview</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="index.html" title="Math Toolkit">
+<link rel="next" href="math_toolkit/main_intro.html" title="About the Math Toolkit">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="index.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/main_intro.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="overview"></a>Chapter 1. Overview</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">About the Math Toolkit</span></dt>
+<dt><span class="section">Navigation</span></dt>
+<dt><span class="section">Document Conventions</span></dt>
+<dt><span class="section">Other Hints and tips</span></dt>
+<dt><span class="section">Directory and File Structure</span></dt>
+<dt><span class="section">Namespaces</span></dt>
+<dt><span class="section"><a href="math_toolkit/result_type.html">Calculation of the Type of the
+ Result</a></span></dt>
+<dt><span class="section">Error Handling</span></dt>
+<dt><span class="section">Compilers</span></dt>
+<dt><span class="section">Configuration Macros</span></dt>
+<dt><span class="section">Policies</span></dt>
+<dt><span class="section">Thread Safety</span></dt>
+<dt><span class="section">Performance</span></dt>
+<dt><span class="section"><a href="math_toolkit/building.html">If and How to Build a Boost.Math
+ Library, and its Examples and Tests</a></span></dt>
+<dt><span class="section">History and What's New</span></dt>
+<dt><span class="section">C99 and C++ TR1 C-style Functions</span></dt>
+<dt><span class="section">Frequently Asked Questions FAQ</span></dt>
+<dt><span class="section">Contact Info and Support</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="index.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/main_intro.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/perf.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/perf.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 14. Performance</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/pol_ref/pol_ref_ref.html" title="Policy Class Reference">
+<link rel="next" href="math_toolkit/perf_over2.html" title="Performance Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/pol_ref/pol_ref_ref.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/perf_over2.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="perf"></a>Chapter 14. Performance</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Performance Overview</span></dt>
+<dt><span class="section">Interpreting these Results</span></dt>
+<dt><span class="section"><a href="math_toolkit/getting_best.html">Getting the Best Performance
+ from this Library</a></span></dt>
+<dt><span class="section">Comparing Compilers</span></dt>
+<dt><span class="section">Performance Tuning Macros</span></dt>
+<dt><span class="section"><a href="math_toolkit/comparisons.html">Comparisons to Other Open Source
+ Libraries</a></span></dt>
+<dt><span class="section">The Performance Test Application</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/pol_ref/pol_ref_ref.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/perf_over2.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/policy.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/policy.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,81 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 13. Policies: Controlling Precision, Error Handling etc</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/archetypes.html" title="Conceptual Archetypes for Reals and Distributions">
+<link rel="next" href="math_toolkit/pol_overview.html" title="Policy Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/archetypes.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/pol_overview.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="policy"></a>Chapter 13. Policies: Controlling Precision, Error Handling etc</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Policy Overview</span></dt>
+<dt><span class="section">Policy Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/pol_tutorial/what_is_a_policy.html">So Just What
+ is a Policy Anyway?</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_tutorial/policy_tut_defaults.html">Policies
+ Have Sensible Defaults</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_tutorial/policy_usage.html">So How are Policies
+ Used Anyway?</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_tutorial/changing_policy_defaults.html">Changing
+ the Policy Defaults</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_tutorial/ad_hoc_dist_policies.html">Setting
+ Policies for Distributions on an Ad Hoc Basis</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_tutorial/ad_hoc_sf_policies.html">Changing
+ the Policy on an Ad Hoc Basis for the Special Functions</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_tutorial/namespace_policies.html">Setting
+ Policies at Namespace or Translation Unit Scope</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_tutorial/user_def_err_pol.html">Calling User
+ Defined Error Handlers</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_tutorial/understand_dis_quant.html">Understanding
+ Quantiles of Discrete Distributions</a></span></dt>
+</dl></dd>
+<dt><span class="section">Policy Reference</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/pol_ref/error_handling_policies.html">Error Handling
+ Policies</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_ref/internal_promotion.html">Internal Floating-point
+ Promotion Policies</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_ref/assert_undefined.html">Mathematically
+ Undefined Function Policies</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_ref/discrete_quant_ref.html">Discrete Quantile
+ Policies</a></span></dt>
+<dt><span class="section">Precision Policies</span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_ref/iteration_pol.html">Iteration Limits
+ Policies</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_ref/policy_defaults.html">Using Macros to
+ Change the Policy Defaults</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/pol_ref/namespace_pol.html">Setting Polices at
+ Namespace Scope</a></span></dt>
+<dt><span class="section">Policy Class Reference</span></dt>
+</dl></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/archetypes.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/pol_overview.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/quaternions.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/quaternions.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 8. Quaternions</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/complex_history.html" title="History">
+<link rel="next" href="math_toolkit/quat_overview.html" title="Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/complex_history.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/quat_overview.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="quaternions"></a>Chapter 8. Quaternions</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section">Header File</span></dt>
+<dt><span class="section">Synopsis</span></dt>
+<dt><span class="section">Template Class quaternion</span></dt>
+<dt><span class="section">Quaternion Specializations</span></dt>
+<dt><span class="section">Quaternion Member Typedefs</span></dt>
+<dt><span class="section">Quaternion Member Functions</span></dt>
+<dt><span class="section">Quaternion Non-Member Operators</span></dt>
+<dt><span class="section">Quaternion Value Operations</span></dt>
+<dt><span class="section">Quaternion Creation Functions</span></dt>
+<dt><span class="section">Quaternion Transcendentals</span></dt>
+<dt><span class="section">Test Program</span></dt>
+<dt><span class="section">The Quaternionic Exponential</span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+<dt><span class="section">History</span></dt>
+<dt><span class="section">To Do</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/complex_history.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/quat_overview.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/special.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/special.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,189 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 3. Special Functions</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/future.html" title="Extras/Future Directions">
+<link rel="next" href="math_toolkit/sf_gamma.html" title="Gamma Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/future.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/sf_gamma.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="special"></a>Chapter 3. Special Functions</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Gamma Functions</span></dt>
+<dd><dl>
+<dt><span class="section">Gamma</span></dt>
+<dt><span class="section">Log Gamma</span></dt>
+<dt><span class="section">Digamma</span></dt>
+<dt><span class="section">Ratios of Gamma Functions</span></dt>
+<dt><span class="section">Incomplete Gamma Functions</span></dt>
+<dt><span class="section"><a href="math_toolkit/sf_gamma/igamma_inv.html">Incomplete Gamma Function
+ Inverses</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/sf_gamma/gamma_derivatives.html">Derivative of
+ the Incomplete Gamma Function</a></span></dt>
+</dl></dd>
+<dt><span class="section">Factorials and Binomial Coefficients</span></dt>
+<dd><dl>
+<dt><span class="section">Factorial</span></dt>
+<dt><span class="section">Double Factorial</span></dt>
+<dt><span class="section">Rising Factorial</span></dt>
+<dt><span class="section"><a href="math_toolkit/factorials/sf_falling_factorial.html">Falling
+ Factorial</a></span></dt>
+<dt><span class="section">Binomial Coefficients</span></dt>
+</dl></dd>
+<dt><span class="section">Beta Functions</span></dt>
+<dd><dl>
+<dt><span class="section">Beta</span></dt>
+<dt><span class="section"><a href="math_toolkit/sf_beta/ibeta_function.html">Incomplete Beta
+ Functions</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/sf_beta/ibeta_inv_function.html">The Incomplete
+ Beta Function Inverses</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/sf_beta/beta_derivative.html">Derivative of the
+ Incomplete Beta Function</a></span></dt>
+</dl></dd>
+<dt><span class="section">Error Functions</span></dt>
+<dd><dl>
+<dt><span class="section">Error Functions</span></dt>
+<dt><span class="section">Error Function Inverses</span></dt>
+</dl></dd>
+<dt><span class="section">Polynomials</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/sf_poly/legendre.html">Legendre (and Associated)
+ Polynomials</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/sf_poly/laguerre.html">Laguerre (and Associated)
+ Polynomials</a></span></dt>
+<dt><span class="section">Hermite Polynomials</span></dt>
+<dt><span class="section">Spherical Harmonics</span></dt>
+</dl></dd>
+<dt><span class="section">Bessel Functions</span></dt>
+<dd><dl>
+<dt><span class="section">Bessel Function Overview</span></dt>
+<dt><span class="section"><a href="math_toolkit/bessel/bessel_first.html">Bessel Functions of
+ the First and Second Kinds</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/bessel/bessel_root.html">Finding Zeros of Bessel
+ Functions of the First and Second Kinds</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/bessel/mbessel.html">Modified Bessel Functions
+ of the First and Second Kinds</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/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">Cyclic Hankel Functions</span></dt>
+<dt><span class="section">Spherical Hankel Functions</span></dt>
+</dl></dd>
+<dt><span class="section">Airy Functions</span></dt>
+<dd><dl>
+<dt><span class="section">Airy Ai Function</span></dt>
+<dt><span class="section">Airy Bi Function</span></dt>
+<dt><span class="section">Airy Ai' Function</span></dt>
+<dt><span class="section">Airy Bi' Function</span></dt>
+</dl></dd>
+<dt><span class="section">Elliptic Integrals</span></dt>
+<dd><dl>
+<dt><span class="section">Elliptic Integral Overview</span></dt>
+<dt><span class="section"><a href="math_toolkit/ellint/ellint_carlson.html">Elliptic Integrals
+ - Carlson Form</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/ellint/ellint_1.html">Elliptic Integrals of the
+ First Kind - Legendre Form</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/ellint/ellint_2.html">Elliptic Integrals of the
+ Second Kind - Legendre Form</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/ellint/ellint_3.html">Elliptic Integrals of the
+ Third Kind - Legendre Form</a></span></dt>
+</dl></dd>
+<dt><span class="section">Jacobi Elliptic Functions</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/jacobi/jac_over.html">Overvew of the Jacobi Elliptic
+ Functions</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_elliptic.html">Jacobi Elliptic
+ SN, CN and DN</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_cd.html">Jacobi Elliptic Function
+ cd</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_cn.html">Jacobi Elliptic Function
+ cn</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_cs.html">Jacobi Elliptic Function
+ cs</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_dc.html">Jacobi Elliptic Function
+ dc</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_dn.html">Jacobi Elliptic Function
+ dn</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_ds.html">Jacobi Elliptic Function
+ ds</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_nc.html">Jacobi Elliptic Function
+ nc</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_nd.html">Jacobi Elliptic Function
+ nd</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_ns.html">Jacobi Elliptic Function
+ ns</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_sc.html">Jacobi Elliptic Function
+ sc</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_sd.html">Jacobi Elliptic Function
+ sd</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/jacobi/jacobi_sn.html">Jacobi Elliptic Function
+ sn</a></span></dt>
+</dl></dd>
+<dt><span class="section">Zeta Functions</span></dt>
+<dd><dl><dt><span class="section">Riemann Zeta Function</span></dt></dl></dd>
+<dt><span class="section">Exponential Integrals</span></dt>
+<dd><dl>
+<dt><span class="section">Exponential Integral En</span></dt>
+<dt><span class="section">Exponential Integral Ei</span></dt>
+</dl></dd>
+<dt><span class="section">Basic Functions</span></dt>
+<dd><dl>
+<dt><span class="section">sin_pi</span></dt>
+<dt><span class="section">cos_pi</span></dt>
+<dt><span class="section">log1p</span></dt>
+<dt><span class="section">expm1</span></dt>
+<dt><span class="section">cbrt</span></dt>
+<dt><span class="section">sqrt1pm1</span></dt>
+<dt><span class="section">powm1</span></dt>
+<dt><span class="section">hypot</span></dt>
+<dt><span class="section"><a href="math_toolkit/powers/ct_pow.html">Compile Time Power of a Runtime
+ Base</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="math_toolkit/sinc.html">Sinus Cardinal and Hyperbolic Sinus
+ Cardinal Functions</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/sinc/sinc_overview.html">Sinus Cardinal and Hyperbolic
+ Sinus Cardinal Functions Overview</a></span></dt>
+<dt><span class="section">sinc_pi</span></dt>
+<dt><span class="section">sinhc_pi</span></dt>
+</dl></dd>
+<dt><span class="section">Inverse Hyperbolic Functions</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/inv_hyper/inv_hyper_over.html">Inverse Hyperbolic
+ Functions Overview</a></span></dt>
+<dt><span class="section">acosh</span></dt>
+<dt><span class="section">asinh</span></dt>
+<dt><span class="section">atanh</span></dt>
+</dl></dd>
+<dt><span class="section">Owen's T function</span></dt>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/future.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/sf_gamma.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/status.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/status.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 16. Library Status</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/refs.html" title="References">
+<link rel="next" href="math_toolkit/history2.html" title="History and What's New">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/refs.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/history2.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="status"></a>Chapter 16. Library Status</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">History and What's New</span></dt>
+<dt><span class="section">Known Issues, and TODO List</span></dt>
+<dt><span class="section">Credits and Acknowledgements</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/refs.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/history2.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/toolkit.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/toolkit.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 11. Internals (Series, Rationals and Continued Fractions, Root Finding, Function Minimization, Testing and Development Tools)</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/gcd_credits.html" title="Credits">
+<link rel="next" href="math_toolkit/internals_overview.html" title="Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/gcd_credits.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/internals_overview.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="toolkit"></a>Chapter 11. Internals (Series, Rationals and Continued Fractions, Root Finding, Function
+ Minimization, Testing and Development Tools)</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section">Utilities & internals</span></dt>
+<dd><dl>
+<dt><span class="section">Series Evaluation</span></dt>
+<dt><span class="section">Continued Fraction Evaluation</span></dt>
+<dt><span class="section"><a href="math_toolkit/internals1/rational.html">Polynomial and Rational
+ Function Evaluation</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/internals1/roots.html">Root Finding With Derivatives:
+ Newton-Raphson, Halley & Schroeder</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/internals1/roots2.html">Root Finding Without
+ Derivatives: Bisection, Bracket and TOMS748</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/internals1/minima.html">Locating Function Minima:
+ Brent's algorithm</a></span></dt>
+<dt><span class="section">Tuples</span></dt>
+</dl></dd>
+<dt><span class="section">Testing and Development</span></dt>
+<dd><dl>
+<dt><span class="section">Polynomials</span></dt>
+<dt><span class="section"><a href="math_toolkit/internals2/minimax.html">Minimax Approximations
+ and the Remez Algorithm</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/internals2/error_test.html">Relative Error and
+ Testing</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/internals2/test_data.html">Graphing, Profiling,
+ and Generating Test Data for Special Functions</a></span></dt>
+</dl></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/gcd_credits.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/internals_overview.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/using_udt.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/using_udt.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 12. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/internals2/test_data.html" title="Graphing, Profiling, and Generating Test Data for Special Functions">
+<link rel="next" href="math_toolkit/high_precision.html" title="Using Boost.Math with High-Precision Floating-Point Libraries">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/internals2/test_data.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/high_precision.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="using_udt"></a>Chapter 12. Use with User-Defined Floating-Point Types - Boost.Multiprecision and
+ others</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section"><a href="math_toolkit/high_precision.html">Using Boost.Math with High-Precision
+ Floating-Point Libraries</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/high_precision/why_high_precision.html">Why use
+ a high-precision library rather than built-in floating-point types?</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/high_precision/use_multiprecision.html">Using
+ Boost.Multiprecision</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/high_precision/float128.html">Using with GCC's
+ __float128 datatype</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/high_precision/use_mpfr.html">Using With MPFR
+ or GMP - High-Precision Floating-Point Library</a></span></dt>
+<dt><span class="section">Using e_float Library</span></dt>
+<dt><span class="section">Using NTL Library</span></dt>
+<dt><span class="section"><a href="math_toolkit/high_precision/using_test.html">Using without
+ expression templates for Boost.Test and others</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="math_toolkit/concepts.html">Conceptual Requirements for Real
+ Number Types</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/dist_concept.html">Conceptual Requirements for
+ Distribution Types</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/archetypes.html">Conceptual Archetypes for Reals
+ and Distributions</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/internals2/test_data.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/high_precision.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/math/libs/math/doc/html/utils.html
==============================================================================
--- (empty file)
+++ sandbox/math/libs/math/doc/html/utils.html 2013-05-14 08:39:44 EDT (Tue, 14 May 2013)
@@ -0,0 +1,74 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 4. Floating Point Utilities</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Math Toolkit">
+<link rel="up" href="index.html" title="Math Toolkit">
+<link rel="prev" href="math_toolkit/owens_t.html" title="Owen's T function">
+<link rel="next" href="math_toolkit/rounding.html" title="Rounding Truncation and Integer Conversion">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="math_toolkit/owens_t.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/rounding.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="chapter">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="utils"></a>Chapter 4. Floating Point Utilities</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="section"><a href="math_toolkit/rounding.html">Rounding Truncation and Integer
+ Conversion</a></span></dt>
+<dd><dl>
+<dt><span class="section">Rounding Functions</span></dt>
+<dt><span class="section">Truncation Functions</span></dt>
+<dt><span class="section"><a href="math_toolkit/rounding/modf.html">Integer and Fractional Part
+ Splitting (modf)</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="math_toolkit/fpclass.html">Floating-Point Classification: Infinities
+ and NaNs</a></span></dt>
+<dt><span class="section">Sign Manipulation Functions</span></dt>
+<dt><span class="section"><a href="math_toolkit/fp_facets.html">Facets for Floating-Point Infinities
+ and NaNs</a></span></dt>
+<dd><dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dt><span class="section">Examples</span></dt>
+<dt><span class="section">Portability</span></dt>
+<dt><span class="section">Design Rationale</span></dt>
+</dl></dd>
+<dt><span class="section"><a href="math_toolkit/next_float.html">Floating-Point Representation
+ Distance (ULP), and Finding Adjacent Floating-Point Values</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="math_toolkit/next_float/nextafter.html">Finding the Next Representable
+ Value in a Specific Direction (nextafter)</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/next_float/float_next.html">Finding the Next
+ Greater Representable Value (float_next)</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/next_float/float_prior.html">Finding the Next
+ Smaller Representable Value (float_prior)</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/next_float/float_distance.html">Calculating the
+ Representation Distance Between Two Floating Point Values (ULP) float_distance</a></span></dt>
+<dt><span class="section"><a href="math_toolkit/next_float/float_advance.html">Advancing a Floating
+ Point Value by a Specific Representation Distance (ULP) float_advance</a></span></dt>
+</dl></dd>
+</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 © 2006-2010, 2012, 2013 Paul A. Bristow, Christopher Kormanyos,
+ Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin
+ Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<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="math_toolkit/owens_t.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="math_toolkit/rounding.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
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